/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * situacaoListTemp
 */
package br.jm.financeiro.view;

import br.jm.financeiro.base.eao.EaoException;
import br.jm.financeiro.datamodel.LazyEmpreendimento;
import br.jm.financeiro.datamodel.LazySelectedEmpreendimentoLote;
import br.jm.financeiro.datamodel.LazyViewEmail;
import br.jm.financeiro.entity.*;
import br.jm.financeiro.filter.Funcoes;
import br.jm.financeiro.filter.SendMail;
import br.jm.financeiro.sistema.eao.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.persistence.EntityManager;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.primefaces.context.RequestContext;
import org.primefaces.event.ToggleEvent;
import org.primefaces.model.LazyDataModel;

/**
 *
 * @author joao
 */
public class ProcessoBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Processo Iniciado com Sucesso", " ");
    private Processo selectedProcesso;
    private ProcessoSituacao selectedProcessoSituacao;
    private Empreendimento selectedEmprendimento;
    private EmpreendimentoLote selectedEmprendimentoLote;
    private ProcessoEao processoJpa;
    private ProcessoMortoEao processoMortoJpa;
    private ProcessoSituacaoEao processoSituacaoJpa;
    private EmpreendimentoEao empreendimentoJpa;
    private EmpreendimentoLoteEao empreendimentoLoteJpa;
    private LazyDataModel<Empreendimento> empreendimentoLazyModel;
    private LazyDataModel<Processo> lazyModel;
    private List<Empreendimento> empreendimentoList;
    private List<EmpreendimentoLote> empreendimentoLoteList;
    private List<Processo> processoList;
    private List<ProcessoSituacao> processoSituacaoList;
    private Funcoes funcoes = new Funcoes();
    private GetIdMaxEao getIdMaxJpa;
    private boolean incluir = false;
    private boolean update = false;
    private boolean incluirAssunto = false;
    private boolean updateAssunto = false;
    private Integer rowIdEmpreendimento;
    private Integer ativaAccordion = 0;
    private String status;
    private String email;
    private String assunto;
    private String texto;
    private ViewEmailEao viewEmailJpa;
    private ViewEmail selectedViewEmail;
    private List<String> viewEmailList;
    private LazyDataModel<ViewEmail> viewEmailLazyModel;
    private boolean atualiza = false;
    private int nContador = 10;
    private Integer rowId;
    private String statusRel = "";
    private String situacaoRel = "";
    private String orderRel = "";
    private String colorloc = "chartreuse";
    private String colorproc = "#CCCCCC";
    private String colorsit = "#c299a3";
    private String colorcom = "#ff0022";
    private String colorass = "#dfe683";
    private String colordes = "#DC8700";

    private String colorerr = "#000000";
    private String corletraerr = "#ffffff";

    private String colornormal = "#ffffff";
    private String corletraloc = "#000000";
    private String corletraproc = "#000000";
    private String corletrasit = "#000000";
    private String corletracom = "#ffffff";
    private String corletraass = "#000000";
    private String corletrades = "#ffffff";
    private ColorMovimentoEao colorMovimentoJpa;
    private ColorMovimento selectedColorMovimento;
    private String cSql;
    private boolean mostraadmin;
    private FacesContext ctx;
    private HttpSession session;
    private Integer rowidprocesso;
    private Usuario usuarioAutenticado;
    private Integer progress;
    private Integer nTotal = 0;
    private ClienteEao clienteEao;
    private String tipRel;
    private Carga selectedCarga;
    private CargaEao cargaEAO;
    private EmpreendimentoLote[] empreendimentoLoteCarga;
    private LazySelectedEmpreendimentoLote lazyEmpreendimentoLoteCarga;
    private List<EmpreendimentoLote> EmpreendimentoLoteListCarga = new ArrayList<>();
    private EntityManager sessao;
    private List<ProcessoMorto> processoMortoList;

    public ProcessoBean() throws EaoException {
        /*
         FacesContext context = FacesContext.getCurrentInstance();
         String obtemIdPaginaAtual = context.getViewRoot().getViewId();
         boolean isLoadPaginaAtual = obtemIdPaginaAtual.lastIndexOf("home.xhtml") > -1;

         if (!isLoadPaginaAtual) {
         return  / home.xhtml;
         } else {
         return null;
         }
         */
        ctx = FacesContext.getCurrentInstance();
        session = (HttpSession) ctx.getExternalContext().getSession(false);

        this.tipRel = "processo";

        selectedProcesso = new Processo();
        selectedProcessoSituacao = new ProcessoSituacao();
        selectedEmprendimento = new Empreendimento();
        selectedEmprendimentoLote = new EmpreendimentoLote();
        selectedViewEmail = new ViewEmail();

        processoList = new ArrayList<>();
        processoSituacaoList = new ArrayList<>();
        empreendimentoList = new ArrayList<>();
        empreendimentoLoteList = new ArrayList<>();
        viewEmailList = new ArrayList<>();

        processoJpa = ProcessoEao.getInstance();
        processoMortoJpa = ProcessoMortoEao.getInstance();
        processoSituacaoJpa = ProcessoSituacaoEao.getInstance();
        empreendimentoJpa = EmpreendimentoEao.getInstance();
        empreendimentoLoteJpa = EmpreendimentoLoteEao.getInstance();
        getIdMaxJpa = GetIdMaxEao.getInstance();
        viewEmailJpa = ViewEmailEao.getInstance();
        colorMovimentoJpa = ColorMovimentoEao.getInstance();
        clienteEao = ClienteEao.getInstance();
        cargaEAO = CargaEao.getInstance();

        selectedColorMovimento = colorMovimentoJpa.getPorId(1);

        colorloc = selectedColorMovimento.getColorloc();
        colorproc = selectedColorMovimento.getColorproc();
        colorsit = selectedColorMovimento.getColorsit();
        colorcom = selectedColorMovimento.getColorcom();
        colorass = selectedColorMovimento.getColorass();

        session.setAttribute("status_empreendimento", "A");
        session.setAttribute("processo_empreendimento", "P");
        session.removeAttribute("filtroSinal");
        empreendimentoLazyModel = new LazyEmpreendimento(empreendimentoJpa);

        viewEmailLazyModel = new LazyViewEmail(viewEmailJpa);

        lazyEmpreendimentoLoteCarga = new LazySelectedEmpreendimentoLote(EmpreendimentoLoteListCarga);

        //ctx = FacesContext.getCurrentInstance();
        //session = (HttpSession) ctx.getExternalContext().getSession(false);
        this.mostraadmin = false;

        try {
            usuarioAutenticado = (Usuario) session.getAttribute("usuarioAutenticado");

            if (usuarioAutenticado != null) {
                if (usuarioAutenticado.getTipUsuario().equals("Administrador") || usuarioAutenticado.getFinaliza()) {
                    this.mostraadmin = true;
                }
            }
        } catch (Exception e) {
            e.getMessage();
        }
    }

    public void inserir(ActionEvent event) throws IOException {
        ctx = FacesContext.getCurrentInstance();
        msg = null;

        try {
            selectedProcesso.setIdProcesso(null);
            this.selectedProcesso.setDatUpdate(new Date());
            processoList = this.selectedEmprendimentoLote.getProcessoList();
            processoList.add(selectedProcesso);
            this.selectedEmprendimentoLote.setProcessoList(processoList);
            this.selectedEmprendimentoLote.setDatUpdateLote(new Date());
            empreendimentoLoteJpa.edit(this.selectedEmprendimentoLote);

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Processo Inserido com Sucesso: ".concat(this.selectedEmprendimentoLote.getNumProcesso())), " ");

        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Inserir", e.getMessage());
        } finally {
            this.incluir = false;
            this.update = false;
            FacesContext.getCurrentInstance().addMessage(null, msg);

            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/movimentos/processo.jsf");
        }
    }

    public void alterar(ActionEvent event) throws IOException {
        ctx = FacesContext.getCurrentInstance();
        msg = null;
        boolean lPassa = false;
        Date dData_Atual = new Date();

        String cData_Atual = funcoes.ConverteDateString(dData_Atual);
        String cData_Formatada = "to_date('" + cData_Atual + "','DD/MM/YYYY HH24:MI:SS') ";

        try {
            // ATUALIZA CAMPO OBS - ACOES
            cSql = "update empreendimento_lote "
                    + "set dsc_obs = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getDscObs()).concat("' ")
                    + " where num_processo = '".concat(funcoes.TiraNull(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso())).concat("' ");
            empreendimentoJpa.executeUpdate(cSql, null, null);
            LoginBean.AtualizaLog("", "ALTERAÇÃO DE AÇÕES DO PROCESSO NUMERO: ".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()));

// Atualiza campo acoes
            /*
             if ((this.selectedProcesso.getDscObs() != null) || (!this.selectedProcesso.getDscObs().isEmpty())) {
             cSql = "update processo "
             + "set dsc_obs = '".concat(this.selectedProcesso.getDscObs()).concat("' ");

             cSql += "where id_empreendimento_lote in (select a.id_empreendimento_lote from empreendimento_lote a, processo b "
             + "where a.id_empreendimento_lote = b.id_empreendimento_lote and a.num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ) ");
             empreendimentoJpa.executeUpdate(cSql, null, null);
             }
             */
            // Atualiza as datas de prorrogacao e concessao
            if (this.selectedProcesso.getDatConcessao1() != null
                    || this.selectedProcesso.getDatConcessao2() != null
                    || this.selectedProcesso.getDatConcessao3() != null
                    || this.selectedProcesso.getDatProrrogacao1() != null
                    || this.selectedProcesso.getDatProrrogacao2() != null
                    || this.selectedProcesso.getDatProrrogacao3() != null) {

                String cDatConcessao1 = funcoes.ConverteDateString(this.selectedProcesso.getDatConcessao1());
                String cDatConcessao2 = funcoes.ConverteDateString(this.selectedProcesso.getDatConcessao2());
                String cDatConcessao3 = funcoes.ConverteDateString(this.selectedProcesso.getDatConcessao3());
                String cDatProrrogacao1 = funcoes.ConverteDateString(this.selectedProcesso.getDatProrrogacao1());
                String cDatProrrogacao2 = funcoes.ConverteDateString(this.selectedProcesso.getDatProrrogacao2());
                String cDatProrrogacao3 = funcoes.ConverteDateString(this.selectedProcesso.getDatProrrogacao3());

                cSql = "update processo "
                        + "set dat_update = dat_update ";
                if (!cDatConcessao1.isEmpty()) {
                    cSql += ", dat_concessao1 = to_date('".concat(cDatConcessao1).concat("', 'dd/mm/yyyy') ");
                } else {
                    cSql += ", dat_concessao1 = null ";
                }
                if (!cDatConcessao2.isEmpty()) {
                    cSql += ", dat_concessao2 = to_date('".concat(cDatConcessao2).concat("', 'dd/mm/yyyy') ");
                } else {
                    cSql += ", dat_concessao2 = null ";
                }
                if (!cDatConcessao3.isEmpty()) {
                    cSql += ", dat_concessao3 = to_date('".concat(cDatConcessao3).concat("', 'dd/mm/yyyy') ");
                } else {
                    cSql += ", dat_concessao3 = null ";
                }
                if (!cDatProrrogacao1.isEmpty()) {
                    cSql += ", dat_prorrogacao1 = to_date('".concat(cDatProrrogacao1).concat("', 'dd/mm/yyyy') ");
                } else {
                    cSql += ", dat_prorrogacao1 = null ";
                }
                if (!cDatProrrogacao2.isEmpty()) {
                    cSql += ", dat_prorrogacao2 = to_date('".concat(cDatProrrogacao2).concat("', 'dd/mm/yyyy') ");
                } else {
                    cSql += ", dat_prorrogacao2 = null ";
                }
                if (!cDatProrrogacao3.isEmpty()) {
                    cSql += ", dat_prorrogacao3 = to_date('".concat(cDatProrrogacao3).concat("', 'dd/mm/yyyy') ");
                } else {
                    cSql += ", dat_prorrogacao3 = null ";
                }

                cSql += "where id_empreendimento_lote in (select a.id_empreendimento_lote from empreendimento_lote a, processo b "
                        + "where a.id_empreendimento_lote = b.id_empreendimento_lote "
                        + "and a.num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ")
                        + " and com_numero = '".concat(funcoes.TiraNull(this.selectedProcesso.getComNumero())).concat("' ) ");
                empreendimentoJpa.executeUpdate(cSql, null, null);
            }

            // Atualiza as cores
            if (this.selectedProcesso.getDatAtendido() != null) {
                String cDatAtendido = funcoes.ConverteDateString(this.selectedProcesso.getDatAtendido());
                cSql = "update processo "
                        + "set dat_atendido = to_date('".concat(cDatAtendido).concat("', 'dd/mm/yyyy') ")
                        + "where id_empreendimento_lote in (select a.id_empreendimento_lote from empreendimento_lote a, processo b "
                        + "where a.id_empreendimento_lote = b.id_empreendimento_lote and a.num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ")
                        + " and com_numero = '".concat(funcoes.TiraNull(this.selectedProcesso.getComNumero())).concat("' ) ");
                empreendimentoJpa.executeUpdate(cSql, null, null);

                cSql = "update empreendimento_lote "
                        + "set emp_color = 'normal-row', dat_update = dat_update "
                        + " where num_processo = '".concat(funcoes.TiraNull(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso())).concat("' ");
                empreendimentoJpa.executeUpdate(cSql, null, null);

                cSql = "update empreendimento "
                        + "set emp_color = 'normal-row', emp_com = '#ffffff', dat_update = dat_update "
                        + "where id_empreendimento in (select distinct id_empreendimento "
                        + "from empreendimento_lote "
                        + "where num_processo = '".concat(funcoes.TiraNull(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso())).concat("' ")
                        + " and id_empreendimento not in (select id_empreendimento from view_processos)) ";
                empreendimentoJpa.executeUpdate(cSql, null, null);

            } else {
                if (this.selectedProcesso.getComNumero() != null) {
                    cSql = "update processo "
                            + "set dat_atendido = null, emp_color = 'com-row' "
                            + "where id_processo in (select b.id_processo from empreendimento_lote a, processo b "
                            + "where a.id_empreendimento_lote = b.id_empreendimento_lote and a.num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ")
                            + " and com_numero = '".concat(funcoes.TiraNull(this.selectedProcesso.getComNumero())).concat("' ) ");
                    empreendimentoJpa.executeUpdate(cSql, null, null);

                    cSql = "update empreendimento_lote "
                            + "set emp_color = 'com-row', dat_update = dat_update "
                            + "where num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ");
                    empreendimentoJpa.executeUpdate(cSql, null, null);

                    cSql = "update empreendimento "
                            + "set emp_color = 'com-row', emp_com = '#ff0022', dat_update = dat_update "
                            + "where id_empreendimento in (select distinct id_empreendimento "
                            + "from empreendimento_lote "
                            + "where num_processo = '".concat(funcoes.TiraNull(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso())).concat("' ) ");
                    empreendimentoJpa.executeUpdate(cSql, null, null);

                    cSql = "update processo "
                            + "set num_triunfo = '".concat(funcoes.TiraNull(this.selectedProcesso.getNumTriunfo())).concat("' ")
                            + "where id_empreendimento_lote in (select a.id_empreendimento_lote from empreendimento_lote a, processo b "
                            + "where a.id_empreendimento_lote = b.id_empreendimento_lote and a.num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ")
                            + " and com_numero = '".concat(funcoes.TiraNull(this.selectedProcesso.getComNumero())).concat("' ) ");
                    empreendimentoJpa.executeUpdate(cSql, null, null);
                }
            }

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Processo Alterado com Sucesso: ".concat(this.selectedEmprendimentoLote.getNumProcesso())), " ");

        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Alterar", e.getMessage());
        } finally {
            this.incluir = false;
            this.update = false;
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void excluir(ActionEvent event) throws IOException {
//        ctx = FacesContext.getCurrentInstance();
        msg = null;

        String cSql;
        try {

            for (int i = 0; i < selectedProcesso.getProcessoSituacaoList().size(); i++) {
                selectedProcessoSituacao = selectedProcesso.getProcessoSituacaoList().get(i);
                cSql = "delete from processo_situacao "
                        + "where id_situacao = ".concat(selectedProcessoSituacao.getIdSituacao().toString());
                processoSituacaoJpa.executeUpdate(cSql, null, null);
            }

            cSql = "delete from processo "
                    + "where id_processo = ".concat(selectedProcesso.getIdProcesso().toString());

            processoJpa.executeUpdate(cSql, null, null);

            if (!"normal-row".equals(selectedProcesso.getIdEmpreendimentoLote().getIdEmpreendimento().getEmpColor())) {
                Integer nIdEmpreendimento = selectedProcesso.getIdEmpreendimentoLote().getIdEmpreendimento().getIdEmpreendimento();
                cSql = "update empreendimento set emp_color = 'normal-row' where id_empreendimento = ".concat(nIdEmpreendimento.toString());

                empreendimentoJpa.executeUpdate(cSql, null, null);
            }
            /*
             this.selectedEmprendimentoLote.getProcessoList().remove(this.selectedProcesso);
             this.selectedEmprendimento.getEmpreendimentoLoteList().set(this.rowIdEmpreendimento, selectedEmprendimentoLote);
             empreendimentoJpa.edit(selectedEmprendimento);
             */
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Processo Excluido com Sucesso: ".concat(this.selectedEmprendimentoLote.getNumProcesso())), " ");

        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Excluir", e.getMessage());
        } finally {
            this.incluir = false;
            this.update = false;
            FacesContext.getCurrentInstance().addMessage(null, msg);

            //ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/movimentos/processo.jsf");
        }
    }

    public void preparaInserir(ActionEvent event) {
        selectedProcessoSituacao = new ProcessoSituacao();
        processoSituacaoList = new ArrayList<ProcessoSituacao>();
        //processoSituacaoList.add(selectedProcessoSituacao);

        selectedProcesso = new Processo();
        selectedProcesso.setIdEmpreendimentoLote(selectedEmprendimentoLote);
        selectedProcesso.setProcessoSituacaoList(processoSituacaoList);
        selectedProcesso.setDatUpdate(new Date());

        this.incluir = true;
        this.update = false;
        this.ativaAccordion = 0;
    }

    public void preparaInserirAssunto(ActionEvent event) {
        this.selectedProcessoSituacao = new ProcessoSituacao();

        this.incluirAssunto = true;
        this.updateAssunto = false;
    }

    public LazyDataModel<Processo> getLazyModel() {
        return lazyModel;
    }

    public void setLazyModel(LazyDataModel<Processo> lazyModel) {
        this.lazyModel = lazyModel;
    }

    public Processo getSelectedProcesso() {
        return selectedProcesso;
    }

    public void setSelectedProcesso(Processo selectedProcesso) throws IOException {
        if (selectedProcesso == null) {
            selectedProcesso = new Processo();
        }

        FacesContext facesContext = FacesContext.getCurrentInstance();
        Map<String, String> map = facesContext.getExternalContext().getRequestParameterMap();

        String cKey = map.get("javax.faces.source");
        if (cKey.indexOf("alterarButtonProcesso") >= 0) {
            this.incluir = false;
            this.update = true;
        } else {
            this.incluir = false;
            this.update = false;
        }

        this.ativaAccordion = 0;
        this.email = "";
        this.assunto = "";
        this.viewEmailList = new ArrayList<String>();

        String PAGINA_PROCESSO = "<br /><br />"
                + "<div align=\\\"\\&quot;center\\&quot;\\\"><h2><font size=\\\"\\&quot;4\\&quot;\\\"><u><strong>PROCESSO No.: #PROCESSO</strong></u></font></h2><p></p></div>\n"
                + "\n"
                + "<fieldset>\n"
                + "    <legend><strong>LOCALIZAÇÃO</strong></legend> \n"
                + "    <strong>Unidade:</strong> #UNIDADE <strong>Desde:</strong> #DESDE<br/>\n"
                + "    #DESCRICAO<br/>\n"
                + "    <strong>Endereço</strong>: #ENDERECO <strong>Bairro:</strong> #BAIRRO<br/>\n"
                + "    <strong>Transito:</strong> #TRANSITO<br/>\n"
                + "    <strong>Em poder do funcionário:</strong> #FUNCIONARIO<strong> RF:</strong> #RF<br/>\n"
                + "    <strong>Telefone:</strong> #TELEFONE<strong> 	Ramal:</strong> #RAMAL<br/> \n"
                + "    <strong>E-mail:</strong> #EMAIL \n"
                + "</fieldset>\n"
                + "\n"
                + "<fieldset>\n"
                + "    <legend><strong>SITUAÇÃO</strong></legend>\n"
                + "    <strong>Data:</strong> #DATA_DESCRICAO <br/>		\n"
                + "    <strong>Situação:</strong> #SITUACAO <br/>		\n"
                + "    <strong>Despacho</strong>:  #DESPACHO	<strong>Data:</strong> #DATA_SIT <strong>D.O.M: </strong> #DOM<br/>	\n"
                + "    <strong>Comunique-se:</strong> #COMUNIQUE <strong>Vencimento:</strong> #VENCIMENTO \n"
                + "</fieldset>\n"
                + "\n"
                + "<fieldset>\n"
                + "    <legend><strong>DADOS DO PROCESSO</strong></legend>\n"
                + "    <strong>Assunto:</strong> #ASSUNTO<br/>\n"
                + "    <strong>Motivo da Autuação:</strong> #AUTUACAO<br/>\n"
                + "    <strong>Interessado:</strong> #INTERESSADO \n"
                + "</fieldset>\n"
                + "\n";

        this.texto = PAGINA_PROCESSO;
        this.texto = this.texto.replace("#PROCESSO", selectedProcesso.getIdEmpreendimentoLote().getNumProcesso());
        this.texto = this.texto.replace("#UNIDADE", funcoes.TiraNull(selectedProcesso.getLocUnidade()));
        this.texto = this.texto.replace("#DESDE", funcoes.ConverteDateString(selectedProcesso.getLocDatDesde()));
        this.texto = this.texto.replace("#DESCRICAO", funcoes.TiraNull(selectedProcesso.getLocDescricao()));
        this.texto = this.texto.replace("#ENDERECO", funcoes.TiraNull(selectedProcesso.getLocEndereco()));
        this.texto = this.texto.replace("#BAIRRO", funcoes.TiraNull(selectedProcesso.getLocBairro()));
        this.texto = this.texto.replace("#TRANSITO", funcoes.TiraNull(selectedProcesso.getLocTransito()));
        this.texto = this.texto.replace("#FUNCIONARIO", funcoes.TiraNull(selectedProcesso.getLocFunciionario()));
        this.texto = this.texto.replace("#RF", funcoes.TiraNull(selectedProcesso.getLocRf()));
        this.texto = this.texto.replace("#TELEFONE", funcoes.TiraNull(selectedProcesso.getLocTelefone()));
        this.texto = this.texto.replace("#RAMAL", funcoes.TiraNull(selectedProcesso.getLocRamal()));
        this.texto = this.texto.replace("#EMAIL", funcoes.TiraNull(selectedProcesso.getLocEmail()));
        this.texto = this.texto.replace("#DATA_DESCRICAO", funcoes.ConverteDateString(selectedProcesso.getSitSituacaoDataDescricao()));
        this.texto = this.texto.replace("#SITUACAO", funcoes.TiraNull(selectedProcesso.getSitDescricao()));
        this.texto = this.texto.replace("#DESPACHO", funcoes.TiraNull(selectedProcesso.getSitDespacho()));
        this.texto = this.texto.replace("#DATA_SIT", funcoes.ConverteDateString(selectedProcesso.getSitDataSituacao()));
        this.texto = this.texto.replace("#DOM", funcoes.TiraNull(selectedProcesso.getSitDom()));
        this.texto = this.texto.replace("#COMUNIQUE", funcoes.TiraNull(selectedProcesso.getSitComunique()));
        this.texto = this.texto.replace("#VENCIMENTO", funcoes.ConverteDateString(selectedProcesso.getSitVencimento()));
        this.texto = this.texto.replace("#ASSUNTO", funcoes.TiraNull(selectedProcesso.getProcAssunto()));
        this.texto = this.texto.replace("#AUTUACAO", funcoes.TiraNull(selectedProcesso.getProcMotivo()));
        this.texto = this.texto.replace("#INTERESSADO", funcoes.TiraNull(selectedProcesso.getProcInteressado()));

        if (!selectedProcesso.getProcessoSituacaoList().isEmpty()) {
            this.texto = this.texto + "<fieldset>\n";
            this.texto = this.texto + "<legend><strong>ASSUNTOS SOLICITADOS</strong></legend>\n";
        }

        for (int i = 0; i < selectedProcesso.getProcessoSituacaoList().size(); i++) {
            this.selectedProcessoSituacao = selectedProcesso.getProcessoSituacaoList().get(i);
            this.texto = this.texto + "<strong>Data:</strong> " + funcoes.ConverteDateString(this.selectedProcessoSituacao.getAssData()) + "<br />\n";
            this.texto = this.texto + "<strong>Assunto:</strong> " + funcoes.TiraNull(this.selectedProcessoSituacao.getAssDescricao()) + "<br />\n";
            this.texto = this.texto + "<strong>Assunto:</strong> " + funcoes.TiraNull(this.selectedProcessoSituacao.getAssSituacao()) + "<br />\n";
        }

        if (!selectedProcesso.getProcessoSituacaoList().isEmpty()) {
            this.texto = this.texto + "</fieldset>\n";

        }

        if (selectedProcesso.getComNumero() != null) {
            this.texto = this.texto + "<fieldset>\n"
                    + "    <legend><strong>COMUNIQUE-SE</strong></legend>\n"
                    + "    <strong>Numero:</strong> #NUMERO <strong>Data:</strong> #DATA_COM<br /> <br /> \n"
                    + "    <strong>Texto:</strong> #TEXTO<br /> \n"
                    + "</fieldset>"
                    + "\n";
            this.texto = this.texto.replace("#NUMERO", funcoes.TiraNull(selectedProcesso.getComNumero()));
            this.texto = this.texto.replace("#DATA_COM", funcoes.ConverteDateString(selectedProcesso.getComData()));
            this.texto = this.texto.replace("#TEXTO", funcoes.TiraNull(selectedProcesso.getComTexto()));
        }
        this.selectedProcessoSituacao = new ProcessoSituacao();

        this.selectedProcesso = selectedProcesso;
    }

    public void onRowToggle(ToggleEvent event) throws EaoException {
        this.selectedEmprendimento = (Empreendimento) event.getData();
        String cFiltro = " id_empreendimento = ".concat(this.selectedEmprendimento.getIdEmpreendimento().toString());
        this.empreendimentoLoteList = empreendimentoLoteJpa.getNative("EmpreendimentoLote", 0, empreendimentoLoteJpa.getCount("EmpreendimentoLote"), null, false, null, null, cFiltro);

        if (this.empreendimentoLoteList.isEmpty()) {
            this.selectedProcesso = new Processo();
            this.selectedProcesso.setIdEmpreendimentoLote(new EmpreendimentoLote());
        } else {
            if (empreendimentoLoteList.get(0).getProcessoList().isEmpty()) {
                this.selectedProcesso = new Processo();
                this.selectedProcesso.setIdEmpreendimentoLote(new EmpreendimentoLote());
            } else {
                this.selectedProcesso = empreendimentoLoteList.get(0).getProcessoList().get(0);
            }
        }
    }

    public List<EmpreendimentoLote> getEmpreendimentoLoteList() {
        return empreendimentoLoteList;
    }

    public void setEmpreendimentoLoteList(List<EmpreendimentoLote> empreendimentoLoteList) {
        this.empreendimentoLoteList = empreendimentoLoteList;
    }

    public List<Processo> getProcessoList() {
        return processoList;
    }

    public void setProcessoList(List<Processo> processoList) {
        this.processoList = processoList;
    }

    public EmpreendimentoLote getSelectedEmprendimentoLote() {
        return selectedEmprendimentoLote;
    }

    public void setSelectedEmprendimentoLote(EmpreendimentoLote selectedEmprendimentoLote) throws EaoException {
        this.ativaAccordion = 0;

        this.selectedProcessoSituacao = new ProcessoSituacao();
        this.processoSituacaoList = new ArrayList<ProcessoSituacao>();
        this.processoSituacaoList.add(selectedProcessoSituacao);
        this.selectedProcesso = new Processo();
        this.selectedProcesso.setProcessoSituacaoList(processoSituacaoList);
        this.selectedProcesso.setIdEmpreendimentoLote(selectedEmprendimentoLote);

        String cFiltro = " id_empreendimento_lote = ".concat(selectedEmprendimentoLote.getIdEmpreendimentoLote().toString());

        processoList = processoJpa.getNative("Processo", 0, processoJpa.getCount("Processo"), "datUpdate", false, null, null, cFiltro);
        selectedEmprendimentoLote.setProcessoList(processoList);

        //Collections.reverse(selectedEmprendimentoLote.getProcessoList());
        this.selectedEmprendimentoLote = selectedEmprendimentoLote;
    }

    public LazyDataModel<Empreendimento> getEmpreendimentoLazyModel() {
        return empreendimentoLazyModel;
    }

    public void setEmpreendimentoLazyModel(LazyDataModel<Empreendimento> empreendimentoLazyModel) {
        this.empreendimentoLazyModel = empreendimentoLazyModel;
    }

    public Empreendimento getSelectedEmprendimento() {
        return selectedEmprendimento;
    }

    public void setSelectedEmprendimento(Empreendimento selectedEmprendimento) {
        this.selectedEmprendimento = selectedEmprendimento;
    }

    public boolean isIncluir() {
        return incluir;
    }

    public void setIncluir(boolean incluir) {
        this.incluir = incluir;
    }

    public boolean isUpdate() {
        return update;
    }

    public void setUpdate(boolean update) {
        this.update = update;
    }

    public ProcessoSituacao getSelectedProcessoSituacao() {
        return selectedProcessoSituacao;
    }

    public void setSelectedProcessoSituacao(ProcessoSituacao selectedProcessoSituacao) {
        if (selectedProcessoSituacao == null) {
            selectedProcessoSituacao = new ProcessoSituacao();
        }
        this.selectedProcessoSituacao = selectedProcessoSituacao;
    }

    public void inserirAssunto(ActionEvent event) {
        selectedProcessoSituacao.setIdProcesso(selectedProcesso);
        selectedProcesso.getProcessoSituacaoList().add(selectedProcessoSituacao);
    }

    public void alterarAssunto(ActionEvent event) {
        selectedProcesso.getProcessoSituacaoList().set(this.rowId, selectedProcessoSituacao);
    }

    public void excluirAssunto(ActionEvent event) {
        selectedProcesso.getProcessoSituacaoList().remove(selectedProcessoSituacao);
    }

    public List<ProcessoSituacao> getProcessoSituacaoList() {
        return processoSituacaoList;
    }

    public void setProcessoSituacaoList(List<ProcessoSituacao> processoSituacaoList) {
        this.processoSituacaoList = processoSituacaoList;
    }

    public boolean isIncluirAssunto() {
        return incluirAssunto;
    }

    public void setIncluirAssunto(boolean incluirAssunto) {
        this.incluirAssunto = incluirAssunto;
    }

    public boolean isUpdateAssunto() {
        return updateAssunto;
    }

    public void setUpdateAssunto(boolean updateAssunto) {
        this.updateAssunto = updateAssunto;
    }

    public Integer getRowId() {
        return rowId;
    }

    public void setRowId(Integer rowId) {
        this.rowId = rowId;
    }

    public Integer getAtivaAccordion() {
        return ativaAccordion;
    }

    public void setAtivaAccordion(Integer ativaAccordion) {
        this.ativaAccordion = ativaAccordion;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String alterarStatus(String cStatus) throws EaoException {
        msg = null;
        this.sessao = null;
        boolean lPassa = true;
        processoMortoList = new ArrayList<ProcessoMorto>();

        try {
            String cFiltro = " id_empreendimento_lote = ".concat(this.selectedEmprendimentoLote.getIdEmpreendimentoLote().toString());
            processoMortoList = processoMortoJpa.getNative("ProcessoMorto", 0, processoMortoJpa.getCount("ProcessoMorto"), null, false, null, null, cFiltro);

            this.sessao = empreendimentoLoteJpa.openSessaoLote();
            empreendimentoLoteJpa.openTransaction(this.sessao);

            //this.selectedEmprendimentoLote = empreendimentoLoteJpa.getPorId(selectedEmprendimentoLote.getIdEmpreendimentoLote());
            // Verifica qual o Status
            if (cStatus.equals("T")) {
                if (!processoMortoList.isEmpty()) {
                    lPassa = false;
                    msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ATENÇÃO ... UTILIZE RESTAURAR ARQUIVO MORTO!", " ");
                } else {
                    this.selectedEmprendimentoLote.setStatusAnterior(this.selectedEmprendimentoLote.getStatus());
                    this.selectedEmprendimentoLote.setTipStatusAnterior(this.selectedEmprendimentoLote.getTipStatus());
                    this.selectedEmprendimentoLote.setTipStatusSinalAnterior(this.selectedEmprendimentoLote.getTipStatusSinal());

                    this.selectedEmprendimentoLote.setStatus("A");
                    this.selectedEmprendimentoLote.setTipStatus("T");
                    this.selectedEmprendimentoLote.setTipStatusSinal("A");

                    msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ASSUNTO: ".concat(this.selectedEmprendimentoLote.getIdAssunto().getDscAssunto()).concat(" ATUALIZADO COM SUCESSO!"), " ");
                }
            } else if (cStatus.equals("O")) {
                if (!processoMortoList.isEmpty()) {
                    lPassa = false;
                    msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ATENÇÃO ... UTILIZE RESTAURAR ARQUIVO MORTO!", " ");
                } else {
                    this.selectedEmprendimentoLote.setStatusAnterior(this.selectedEmprendimentoLote.getStatus());
                    this.selectedEmprendimentoLote.setTipStatusAnterior(this.selectedEmprendimentoLote.getTipStatus());
                    this.selectedEmprendimentoLote.setTipStatusSinalAnterior(this.selectedEmprendimentoLote.getTipStatusSinal());

                    this.selectedEmprendimentoLote.setStatus("A");
                    this.selectedEmprendimentoLote.setTipStatus("O");
                    this.selectedEmprendimentoLote.setTipStatusSinal("A");

                    msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ASSUNTO: ".concat(this.selectedEmprendimentoLote.getIdAssunto().getDscAssunto()).concat(" ATUALIZADO COM SUCESSO!"), " ");
                }
            } else if (cStatus.equals("E")) {
                this.selectedEmprendimentoLote.setStatusAnterior(this.selectedEmprendimentoLote.getStatus());
                this.selectedEmprendimentoLote.setTipStatusAnterior(this.selectedEmprendimentoLote.getTipStatus());
                this.selectedEmprendimentoLote.setTipStatusSinalAnterior(this.selectedEmprendimentoLote.getTipStatusSinal());

                gravaArquivo("F");

                this.selectedEmprendimentoLote.setStatus("F");
                this.selectedEmprendimentoLote.setTipStatus("E");
                this.selectedEmprendimentoLote.setTipStatusSinal("F");

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ASSUNTO: ".concat(this.selectedEmprendimentoLote.getIdAssunto().getDscAssunto()).concat(" FINALIZADO COM SUCESSO!"), " ");
            } else if (cStatus.equals("I")) {
                this.selectedEmprendimentoLote.setStatusAnterior(this.selectedEmprendimentoLote.getStatus());
                this.selectedEmprendimentoLote.setTipStatusAnterior(this.selectedEmprendimentoLote.getTipStatus());
                this.selectedEmprendimentoLote.setTipStatusSinalAnterior(this.selectedEmprendimentoLote.getTipStatusSinal());

                gravaArquivo("F");

                this.selectedEmprendimentoLote.setStatus("F");
                this.selectedEmprendimentoLote.setTipStatus("I");
                this.selectedEmprendimentoLote.setTipStatusSinal("F");

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ASSUNTO: ".concat(this.selectedEmprendimentoLote.getIdAssunto().getDscAssunto()).concat(" FINALIZADO COM SUCESSO!"), " ");
            } else if (cStatus.equals("D")) {
                this.selectedEmprendimentoLote.setStatusAnterior(this.selectedEmprendimentoLote.getStatus());
                this.selectedEmprendimentoLote.setTipStatusAnterior(this.selectedEmprendimentoLote.getTipStatus());
                this.selectedEmprendimentoLote.setTipStatusSinalAnterior(this.selectedEmprendimentoLote.getTipStatusSinal());

                gravaArquivo("F");

                this.selectedEmprendimentoLote.setStatus("F");
                this.selectedEmprendimentoLote.setTipStatus("D");
                this.selectedEmprendimentoLote.setTipStatusSinal("F");

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ASSUNTO: ".concat(this.selectedEmprendimentoLote.getIdAssunto().getDscAssunto()).concat(" FINALIZADO COM SUCESSO!"), " ");
            } else if (cStatus.equals("N")) {
                this.selectedEmprendimentoLote.setStatusAnterior(this.selectedEmprendimentoLote.getStatus());
                this.selectedEmprendimentoLote.setTipStatusAnterior(this.selectedEmprendimentoLote.getTipStatus());
                this.selectedEmprendimentoLote.setTipStatusSinalAnterior(this.selectedEmprendimentoLote.getTipStatusSinal());

                gravaArquivo("F");

                this.selectedEmprendimentoLote.setStatus("N");
                this.selectedEmprendimentoLote.setTipStatus("N");
                this.selectedEmprendimentoLote.setTipStatusSinal("N");

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ASSUNTO: ".concat(this.selectedEmprendimentoLote.getIdAssunto().getDscAssunto()).concat(" FINALIZADO COM SUCESSO!"), " ");
            } else if (cStatus.equals("M")) {
                if (!processoMortoList.isEmpty()) {
                    gravaArquivo("M");

                    this.selectedEmprendimentoLote.setStatus(this.selectedEmprendimentoLote.getStatusAnterior());
                    this.selectedEmprendimentoLote.setTipStatus(this.selectedEmprendimentoLote.getTipStatusAnterior());
                    this.selectedEmprendimentoLote.setTipStatusSinal(this.selectedEmprendimentoLote.getTipStatusSinalAnterior());

                    msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ASSUNTO: ".concat(this.selectedEmprendimentoLote.getIdAssunto().getDscAssunto()).concat(" RESTAURADO COM SUCESSO!"), " ");
                } else {
                    msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ATENÇÃO ... NÃO EXISTE DADOS NO ARQUIVO MORTO!", " ");
                }
            }

            if (lPassa) {
                this.selectedEmprendimentoLote.getIdEmpreendimento().setDatUpdate(new Date());
                this.selectedEmprendimentoLote.setDatUpdateLote(new Date());
                this.selectedEmprendimentoLote.setDatProcesso(new Date());

                empreendimentoLoteJpa.edit(this.selectedEmprendimentoLote, "S", sessao);
                empreendimentoJpa.edit(this.selectedEmprendimentoLote.getIdEmpreendimento(), "S", sessao);
                empreendimentoLoteJpa.closeTransaction(this.sessao);
                LoginBean.AtualizaLog("", "ALTERAÇÃO STATUS DO PROCESSO: ".concat(this.selectedEmprendimentoLote.getNumProcesso()));
            }

        } catch (Exception ex) {
            empreendimentoLoteJpa.closeSessaoRollback(this.sessao);
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ASSUNTO: ".concat(this.selectedEmprendimentoLote.getIdAssunto().getDscAssunto()).concat(" ERRO AO ATUALIZAR!"), " ");
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }

        return null;
    }

    public void gravaArquivo(String cStatus) throws EaoException {
        ProcessoMorto selectedProcessoMorto = new ProcessoMorto();
        if (cStatus.equals("F")) {
            for (int i = 0; i < this.selectedEmprendimentoLote.getProcessoList().size(); i++) {
                this.selectedProcesso = this.selectedEmprendimentoLote.getProcessoList().get(i);

                selectedProcessoMorto = new ProcessoMorto();

                selectedProcessoMorto.setComData(this.selectedProcesso.getComData());
                selectedProcessoMorto.setComNumero(this.selectedProcesso.getComNumero());
                selectedProcessoMorto.setComTexto(this.selectedProcesso.getComTexto());
                selectedProcessoMorto.setDatAtendido(this.selectedProcesso.getDatAtendido());
                selectedProcessoMorto.setDatConcessao1(this.selectedProcesso.getDatConcessao1());
                selectedProcessoMorto.setDatConcessao2(this.selectedProcesso.getDatConcessao2());
                selectedProcessoMorto.setDatConcessao3(this.selectedProcesso.getDatConcessao3());
                selectedProcessoMorto.setDatProrrogacao1(this.selectedProcesso.getDatProrrogacao1());
                selectedProcessoMorto.setDatProrrogacao2(this.selectedProcesso.getDatProrrogacao2());
                selectedProcessoMorto.setDatProrrogacao3(this.selectedProcesso.getDatProrrogacao3());
                selectedProcessoMorto.setDatUpdate(this.selectedProcesso.getDatUpdate());
                selectedProcessoMorto.setDesData(this.selectedProcesso.getDesData());
                selectedProcessoMorto.setDesDescricao(this.selectedProcesso.getDesDescricao());
                selectedProcessoMorto.setDesDespacho(this.selectedProcesso.getDesDespacho());
                selectedProcessoMorto.setDesMotivo(this.selectedProcesso.getDesMotivo());
                selectedProcessoMorto.setDscObs(this.selectedProcesso.getIdEmpreendimentoLote().getDscObs());
                selectedProcessoMorto.setEmpColor(this.selectedProcesso.getEmpColor());
                selectedProcessoMorto.setIdEmpreendimentoLote(this.selectedProcesso.getIdEmpreendimentoLote().getIdEmpreendimentoLote());
                selectedProcessoMorto.setIdProcesso(this.selectedProcesso.getIdProcesso());
                selectedProcessoMorto.setLocBairro(this.selectedProcesso.getLocBairro());
                selectedProcessoMorto.setLocDatDesde(this.selectedProcesso.getLocDatDesde());
                selectedProcessoMorto.setLocDescricao(this.selectedProcesso.getLocDescricao());
                selectedProcessoMorto.setLocEmail(this.selectedProcesso.getLocEmail());
                selectedProcessoMorto.setLocEndereco(this.selectedProcesso.getLocEndereco());
                selectedProcessoMorto.setLocFunciionario(this.selectedProcesso.getLocFunciionario());
                selectedProcessoMorto.setLocRamal(this.selectedProcesso.getLocRamal());
                selectedProcessoMorto.setLocRf(this.selectedProcesso.getLocRf());
                selectedProcessoMorto.setLocTelefone(this.selectedProcesso.getLocTelefone());
                selectedProcessoMorto.setLocTransito(this.selectedProcesso.getLocTransito());
                selectedProcessoMorto.setLocUnidade(this.selectedProcesso.getLocUnidade());
                selectedProcessoMorto.setNumTriunfo(this.selectedProcesso.getNumTriunfo());
                selectedProcessoMorto.setProcAssunto(this.selectedProcesso.getProcAssunto());
                selectedProcessoMorto.setProcInteressado(this.selectedProcesso.getProcInteressado());
                selectedProcessoMorto.setProcMotivo(this.selectedProcesso.getProcMotivo());
                selectedProcessoMorto.setSitComunique(this.selectedProcesso.getSitComunique());
                selectedProcessoMorto.setSitDataSituacao(this.selectedProcesso.getSitDataSituacao());
                selectedProcessoMorto.setSitDescricao(this.selectedProcesso.getSitDescricao());
                selectedProcessoMorto.setSitDespacho(this.selectedProcesso.getSitDespacho());
                selectedProcessoMorto.setSitDom(this.selectedProcesso.getSitDom());
                selectedProcessoMorto.setSitSituacaoDataDescricao(this.selectedProcesso.getSitSituacaoDataDescricao());
                selectedProcessoMorto.setSitVencimento(this.selectedProcesso.getSitVencimento());

                List<ProcessoSituacaoMorto> selectedProcessoSituacaoMortoList = new ArrayList<ProcessoSituacaoMorto>();

                for (int j = 0; j < this.selectedProcesso.getProcessoSituacaoList().size(); j++) {
                    this.selectedProcessoSituacao = this.selectedProcesso.getProcessoSituacaoList().get(j);

                    ProcessoSituacaoMorto selectedProcessoSituacaoMorto = new ProcessoSituacaoMorto();

                    selectedProcessoSituacaoMorto.setAssColor(this.selectedProcessoSituacao.getAssColor());
                    selectedProcessoSituacaoMorto.setAssData(this.selectedProcessoSituacao.getAssData());
                    selectedProcessoSituacaoMorto.setAssDescricao(this.selectedProcessoSituacao.getAssDescricao());
                    selectedProcessoSituacaoMorto.setAssSituacao(this.selectedProcessoSituacao.getAssSituacao());
                    selectedProcessoSituacaoMorto.setAssTipo(this.selectedProcessoSituacao.getAssTipo());
                    selectedProcessoSituacaoMorto.setIdProcesso(selectedProcessoMorto);
                    selectedProcessoSituacaoMorto.setIdSituacao(this.selectedProcessoSituacao.getIdSituacao());

                    selectedProcessoSituacaoMortoList.add(selectedProcessoSituacaoMorto);
                }
                selectedProcessoMorto.setProcessoSituacaoMortoList(selectedProcessoSituacaoMortoList);
                // CRIA ARQUIVO MORTO DOS HISTORICOS
                processoMortoJpa.create(selectedProcessoMorto, "S", sessao);
                // DELETA HISTORICO ATUAL
                processoJpa.destroy(this.selectedProcesso, "S", sessao);
            }
            this.selectedEmprendimentoLote.setProcessoList(new ArrayList<Processo>());
        } else if (cStatus.equals("M")) {
            List<Processo> processoList = new ArrayList<Processo>();

            for (int i = 0; i < processoMortoList.size(); i++) {
                selectedProcessoMorto = processoMortoList.get(i);

                selectedProcesso = new Processo();

                selectedProcesso.setComData(selectedProcessoMorto.getComData());
                selectedProcesso.setComNumero(selectedProcessoMorto.getComNumero());
                selectedProcesso.setComTexto(selectedProcessoMorto.getComTexto());
                selectedProcesso.setDatAtendido(selectedProcessoMorto.getDatAtendido());
                selectedProcesso.setDatConcessao1(selectedProcessoMorto.getDatConcessao1());
                selectedProcesso.setDatConcessao2(selectedProcessoMorto.getDatConcessao2());
                selectedProcesso.setDatConcessao3(selectedProcessoMorto.getDatConcessao3());
                selectedProcesso.setDatProrrogacao1(selectedProcessoMorto.getDatProrrogacao1());
                selectedProcesso.setDatProrrogacao2(selectedProcessoMorto.getDatProrrogacao2());
                selectedProcesso.setDatProrrogacao3(selectedProcessoMorto.getDatProrrogacao3());
                selectedProcesso.setDatUpdate(selectedProcessoMorto.getDatUpdate());
                selectedProcesso.setDesData(selectedProcessoMorto.getDesData());
                selectedProcesso.setDesDescricao(selectedProcessoMorto.getDesDescricao());
                selectedProcesso.setDesDespacho(selectedProcessoMorto.getDesDespacho());
                selectedProcesso.setDesMotivo(selectedProcessoMorto.getDesMotivo());
                //selectedProcesso.setDscObs(selectedProcessoMorto.getIdEmpreendimentoLote().getDscObs());
                selectedProcesso.setEmpColor(selectedProcessoMorto.getEmpColor());
                selectedProcesso.setIdEmpreendimentoLote(this.selectedEmprendimentoLote);
                selectedProcesso.setIdProcesso(selectedProcessoMorto.getIdProcesso());
                selectedProcesso.setLocBairro(selectedProcessoMorto.getLocBairro());
                selectedProcesso.setLocDatDesde(selectedProcessoMorto.getLocDatDesde());
                selectedProcesso.setLocDescricao(selectedProcessoMorto.getLocDescricao());
                selectedProcesso.setLocEmail(selectedProcessoMorto.getLocEmail());
                selectedProcesso.setLocEndereco(selectedProcessoMorto.getLocEndereco());
                selectedProcesso.setLocFunciionario(selectedProcessoMorto.getLocFunciionario());
                selectedProcesso.setLocRamal(selectedProcessoMorto.getLocRamal());
                selectedProcesso.setLocRf(selectedProcessoMorto.getLocRf());
                selectedProcesso.setLocTelefone(selectedProcessoMorto.getLocTelefone());
                selectedProcesso.setLocTransito(selectedProcessoMorto.getLocTransito());
                selectedProcesso.setLocUnidade(selectedProcessoMorto.getLocUnidade());
                selectedProcesso.setNumTriunfo(selectedProcessoMorto.getNumTriunfo());
                selectedProcesso.setProcAssunto(selectedProcessoMorto.getProcAssunto());
                selectedProcesso.setProcInteressado(selectedProcessoMorto.getProcInteressado());
                selectedProcesso.setProcMotivo(selectedProcessoMorto.getProcMotivo());
                selectedProcesso.setSitComunique(selectedProcessoMorto.getSitComunique());
                selectedProcesso.setSitDataSituacao(selectedProcessoMorto.getSitDataSituacao());
                selectedProcesso.setSitDescricao(selectedProcessoMorto.getSitDescricao());
                selectedProcesso.setSitDespacho(selectedProcessoMorto.getSitDespacho());
                selectedProcesso.setSitDom(selectedProcessoMorto.getSitDom());
                selectedProcesso.setSitSituacaoDataDescricao(selectedProcessoMorto.getSitSituacaoDataDescricao());
                selectedProcesso.setSitVencimento(selectedProcessoMorto.getSitVencimento());

                List<ProcessoSituacao> selectedProcessoSituacaoList = new ArrayList<ProcessoSituacao>();

                for (int j = 0; j < selectedProcessoMorto.getProcessoSituacaoMortoList().size(); j++) {
                    ProcessoSituacaoMorto selectedProcessoSituacaoMorto = selectedProcessoMorto.getProcessoSituacaoMortoList().get(j);

                    selectedProcessoSituacao = new ProcessoSituacao();

                    selectedProcessoSituacao.setAssColor(selectedProcessoSituacaoMorto.getAssColor());
                    selectedProcessoSituacao.setAssData(selectedProcessoSituacaoMorto.getAssData());
                    selectedProcessoSituacao.setAssDescricao(selectedProcessoSituacaoMorto.getAssDescricao());
                    selectedProcessoSituacao.setAssSituacao(selectedProcessoSituacaoMorto.getAssSituacao());
                    selectedProcessoSituacao.setAssTipo(selectedProcessoSituacaoMorto.getAssTipo());
                    selectedProcessoSituacao.setIdProcesso(selectedProcesso);
                    selectedProcessoSituacao.setIdSituacao(selectedProcessoSituacaoMorto.getIdSituacao());

                    selectedProcessoSituacaoList.add(selectedProcessoSituacao);
                }
                selectedProcesso.setProcessoSituacaoList(selectedProcessoSituacaoList);

                processoList.add(selectedProcesso);

                processoMortoJpa.destroy(selectedProcessoMorto, "S", sessao);
            }
            this.selectedEmprendimentoLote.setProcessoList(processoList);
        }
    }

    public String alterarStatusSinal(String cStatus) {
        msg = null;

        try {
            this.selectedEmprendimentoLote = empreendimentoLoteJpa.getPorId(selectedEmprendimentoLote.getIdEmpreendimentoLote());
            this.selectedEmprendimentoLote.setTipStatusSinal(cStatus);
            empreendimentoLoteJpa.edit(selectedEmprendimentoLote);

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "ASSUNTO: ".concat(this.selectedEmprendimentoLote.getIdAssunto().getDscAssunto()).concat(" ATUALIZADO COM SUCESSO!")), " ");

        } catch (Exception ex) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ASSUNTO: ".concat(this.selectedEmprendimentoLote.getIdAssunto().getDscAssunto()).concat(" ERRO AO ATUALIZAR!"), " ");
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }

        return null;
    }

    public void addMessage(String summary, String detail) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public void enviarEmail(ActionEvent event) {
        try {
            for (String viewEmailList1 : this.viewEmailList) {
                //SendEmail.enviaEmailSimples("triunfosp@gmail.com", viewEmailList1, this.assunto, this.texto);
                new SendMail().sendMail("triunfosp@yahoo.com.br", viewEmailList1, this.assunto, this.texto);
                //EnviarEmail.enviaEmail();
            }

            addMessage("Envio do E-Mail enviado com SUCESSO!", this.selectedProcesso.getProcAssunto());

        } catch (Exception ex) {
            addMessage("ERRO ... Envio do E-Mail não enviado!", this.selectedProcesso.getProcAssunto());
        }

    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getAssunto() {
        return assunto;
    }

    public void setAssunto(String assunto) {
        this.assunto = assunto;
    }

    public String getTexto() {
        return texto;
    }

    public void setTexto(String texto) {
        this.texto = texto;
    }

    public ViewEmail getSelectedViewEmail() {
        return selectedViewEmail;
    }

    public void setSelectedViewEmail(ViewEmail selectedViewEmail) {
        this.email += selectedViewEmail.getEmail().concat("; ");
        this.viewEmailList.add(selectedViewEmail.getEmail());
        this.selectedViewEmail = selectedViewEmail;
    }

    public List<String> getViewEmailList() {
        return viewEmailList;
    }

    public void setViewEmailList(List<String> viewEmailList) {
        this.viewEmailList = viewEmailList;
    }

    public LazyDataModel<ViewEmail> getViewEmailLazyModel() {
        return viewEmailLazyModel;
    }

    public void setViewEmailLazyModel(LazyDataModel<ViewEmail> viewEmailLazyModel) {
        this.viewEmailLazyModel = viewEmailLazyModel;
    }

    public List<Empreendimento> getEmpreendimentoList() {
        return empreendimentoList;
    }

    public void setEmpreendimentoList(List<Empreendimento> empreendimentoList) {
        this.empreendimentoList = empreendimentoList;
    }

    public void atualizaCarga() {
        if (atualiza) {
            if (nContador == 0) {
                this.atualiza = false;
                nContador = 10;
            } else {
                nContador = nContador - 1;
            }
            addMessage("PROCESSOS ATUALIZADOS!", "ATUALIZE A PAGINA!");
        }
    }

    public boolean isAtualiza() {
        return atualiza;
    }

    public void setAtualiza(boolean atualiza) {
        this.atualiza = atualiza;
    }

    public Integer getRowIdEmpreendimento() {
        return rowIdEmpreendimento;
    }

    public void setRowIdEmpreendimento(Integer rowIdEmpreendimento) {
        this.rowIdEmpreendimento = rowIdEmpreendimento;
    }

    public String getStatusRel() {
        return statusRel;
    }

    public void setStatusRel(String statusRel) {
        this.statusRel = statusRel;
    }

    public String getSituacaoRel() {
        return situacaoRel;
    }

    public void setSituacaoRel(String situacaoRel) {
        this.situacaoRel = situacaoRel;
    }

    public String getOrderRel() {
        return orderRel;
    }

    public void setOrderRel(String orderRel) {
        this.orderRel = orderRel;
    }

    public String getColorloc() {
        return colorloc;
    }

    public void setColorloc(String colorloc) {
        this.colorloc = colorloc;
    }

    public String getColorproc() {
        return colorproc;
    }

    public void setColorproc(String colorproc) {
        this.colorproc = colorproc;
    }

    public String getColorsit() {
        return colorsit;
    }

    public void setColorsit(String colorsit) {
        this.colorsit = colorsit;
    }

    public String getColorcom() {
        return colorcom;
    }

    public void setColorcom(String colorcom) {
        this.colorcom = colorcom;
    }

    public String getColorass() {
        return colorass;
    }

    public void setColorass(String colorass) {
        this.colorass = colorass;
    }

    public String getCorletraloc() {
        return corletraloc;
    }

    public void setCorletraloc(String corletraloc) {
        this.corletraloc = corletraloc;
    }

    public String getCorletraproc() {
        return corletraproc;
    }

    public void setCorletraproc(String corletraproc) {
        this.corletraproc = corletraproc;
    }

    public String getCorletrasit() {
        return corletrasit;
    }

    public void setCorletrasit(String corletrasit) {
        this.corletrasit = corletrasit;
    }

    public String getCorletracom() {
        return corletracom;
    }

    public void setCorletracom(String corletracom) {
        this.corletracom = corletracom;
    }

    public String getCorletraass() {
        return corletraass;
    }

    public void setCorletraass(String corletraass) {
        this.corletraass = corletraass;
    }

    public String getColornormal() {
        return colornormal;
    }

    public void setColornormal(String colornormal) {
        this.colornormal = colornormal;
    }

    public void gravaColor(ActionEvent event) {
        if (!Pattern.compile("#", Pattern.CASE_INSENSITIVE).matcher(this.colorass).matches()) {
            this.colorass = "#".concat(this.colorass);
        }
        if (!Pattern.compile("#", Pattern.CASE_INSENSITIVE).matcher(this.colorcom).matches()) {
            this.colorcom = "#".concat(this.colorcom);
        }
        if (!Pattern.compile("#", Pattern.CASE_INSENSITIVE).matcher(this.colorloc).matches()) {
            this.colorloc = "#".concat(this.colorloc);
        }
        if (!Pattern.compile("#", Pattern.CASE_INSENSITIVE).matcher(this.colorproc).matches()) {
            this.colorproc = "#".concat(this.colorproc);
        }
        if (!Pattern.compile("#", Pattern.CASE_INSENSITIVE).matcher(this.colorsit).matches()) {
            this.colorsit = "#".concat(this.colorsit);
        }

        selectedColorMovimento.setColorass(this.colorass);
        selectedColorMovimento.setColorcom(this.colorcom);
        selectedColorMovimento.setColorloc(this.colorloc);
        selectedColorMovimento.setColorproc(this.colorproc);
        selectedColorMovimento.setColorsit(this.colorsit);
        try {
            colorMovimentoJpa.edit(selectedColorMovimento);
        } catch (Exception ex) {
            Logger.getLogger(ProcessoBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public boolean isMostraadmin() {
        return mostraadmin;
    }

    public void setMostraadmin(boolean mostraadmin) {
        this.mostraadmin = mostraadmin;
    }

    public Integer getRowidprocesso() {
        return rowidprocesso;
    }

    public void setRowidprocesso(Integer rowidprocesso) {
        this.rowidprocesso = rowidprocesso;
    }

    public void alterarObs() throws EaoException {
        msg = null;
        boolean lPassa = false;
        Date dData_Atual = new Date();

        String cData_Atual = funcoes.ConverteDateString(dData_Atual);
        String cData_Formatada = "to_date('" + cData_Atual + "','DD/MM/YYYY HH24:MI:SS') ";

        List<EmpreendimentoLote> empreendimentoLoteListTemp;

        empreendimentoLoteListTemp = this.selectedEmprendimento.getEmpreendimentoLoteList();     //processoJpa.getNative("Processo", 0, processoJpa.getCount("Processo"), null, true, null, null);

        for (int i = 0; i < empreendimentoLoteListTemp.size(); i++) {
            try {
                EmpreendimentoLote selectedEmpreendimentoLoteTemp = empreendimentoLoteListTemp.get(i);
                Processo selectedProcessoTemp = new Processo();
                String cNumProcesso = "";

                for (int m = 0; m < selectedEmpreendimentoLoteTemp.getProcessoList().size(); m++) {
                    this.selectedProcesso = selectedEmpreendimentoLoteTemp.getProcessoList().get(m);

                    if (this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso().equals(cNumProcesso)) {
                        break;
                    }

                    // Atualiza campo acoes
                    /*
                     if (this.selectedProcesso.getDscObs() != null) {
                     if (!this.selectedProcesso.getDscObs().isEmpty()) {
                     cSql = "update processo "
                     + "set dsc_obs = '".concat(this.selectedProcesso.getDscObs()).concat("' ");

                     cSql += "where id_empreendimento_lote in (select a.id_empreendimento_lote from empreendimento_lote a, processo b "
                     + "where a.id_empreendimento_lote = b.id_empreendimento_lote and a.num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ) ");
                     empreendimentoJpa.executeUpdate(cSql, null, null);
                     }
                     }
                     */
                    // Atualiza as datas de prorrogacao e concessao
                    if (this.selectedProcesso.getDatConcessao1() != null
                            || this.selectedProcesso.getDatConcessao2() != null
                            || this.selectedProcesso.getDatConcessao3() != null
                            || this.selectedProcesso.getDatProrrogacao1() != null
                            || this.selectedProcesso.getDatProrrogacao2() != null
                            || this.selectedProcesso.getDatProrrogacao3() != null) {

                        String cDatConcessao1 = funcoes.TiraNull(funcoes.ConverteDateString(this.selectedProcesso.getDatConcessao1()));
                        String cDatConcessao2 = funcoes.TiraNull(funcoes.ConverteDateString(this.selectedProcesso.getDatConcessao2()));
                        String cDatConcessao3 = funcoes.TiraNull(funcoes.ConverteDateString(this.selectedProcesso.getDatConcessao3()));
                        String cDatProrrogacao1 = funcoes.TiraNull(funcoes.ConverteDateString(this.selectedProcesso.getDatProrrogacao1()));
                        String cDatProrrogacao2 = funcoes.TiraNull(funcoes.ConverteDateString(this.selectedProcesso.getDatProrrogacao2()));
                        String cDatProrrogacao3 = funcoes.TiraNull(funcoes.ConverteDateString(this.selectedProcesso.getDatProrrogacao3()));

                        cSql = "update processo "
                                + "set dat_update = dat_update"; //+ cData_Formatada;
                        if (funcoes.ValidaData(cDatConcessao1)) {
                            cSql += ", dat_concessao1 = to_date('".concat(cDatConcessao1).concat("', 'dd/mm/yyyy') ");
                        }
                        if (funcoes.ValidaData(cDatConcessao2)) {
                            cSql += ", dat_concessao2 = to_date('".concat(cDatConcessao2).concat("', 'dd/mm/yyyy') ");
                        }
                        if (funcoes.ValidaData(cDatConcessao3)) {
                            cSql += ", dat_concessao3 = to_date('".concat(cDatConcessao3).concat("', 'dd/mm/yyyy') ");
                        }
                        if (funcoes.ValidaData(cDatProrrogacao1)) {
                            cSql += ", dat_prorrogacao1 = to_date('".concat(cDatProrrogacao1).concat("', 'dd/mm/yyyy') ");
                        }
                        if (funcoes.ValidaData(cDatProrrogacao2)) {
                            cSql += ", dat_prorrogacao2 = to_date('".concat(cDatProrrogacao2).concat("', 'dd/mm/yyyy') ");
                        }
                        if (funcoes.ValidaData(cDatProrrogacao3)) {
                            cSql += ", dat_prorrogacao3 = to_date('".concat(cDatProrrogacao3).concat("', 'dd/mm/yyyy') ");
                        }
                        cSql += "where id_empreendimento_lote in (select a.id_empreendimento_lote from empreendimento_lote a, processo b "
                                + "where a.id_empreendimento_lote = b.id_empreendimento_lote and a.num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ) ");
                        empreendimentoJpa.executeUpdate(cSql, null, null);
                    }
                    // Atualiza as cores
                    if (this.selectedProcesso.getDatAtendido() != null) {
                        String cDatAtendido = funcoes.ConverteDateString(this.selectedProcesso.getDatAtendido());
                        cSql = "update processo "
                                + "set dat_update = dat_update" + ", dat_atendido = to_date('".concat(cDatAtendido).concat("', 'dd/mm/yyyy') ")
                                + "where id_processo = " + this.selectedProcesso.getIdProcesso();

                        //+ "empreendimento_lote in (select a.id_empreendimento_lote from empreendimento_lote a, processo b "
                        //+ "where a.id_empreendimento_lote = b.id_empreendimento_lote and a.num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ) ");
                        empreendimentoJpa.executeUpdate(cSql, null, null);
                        /*
                         cSql = "update empreendimento_lote "
                         + "set emp_color = 'normal-row', dat_update = dat_update "
                         + "where num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ");
                         empreendimentoJpa.executeUpdate(cSql, null, null);

                         cSql = "update empreendimento "
                         + "set emp_color = 'normal-row', dat_update = dat_update "
                         + "where id_empreendimento in (select distinct id_empreendimento "
                         + "from empreendimento_lote "
                         + "where num_processo = '".concat(this.selectedProcesso.getIdEmpreendimentoLote().getNumProcesso()).concat("' ")
                         + " and id_empreendimento not in (select id_empreendimento from view_processos)) ";
                         empreendimentoJpa.executeUpdate(cSql, null, null);
                         */
                    }
                    selectedProcessoTemp = selectedEmpreendimentoLoteTemp.getProcessoList().get(m);
                    cNumProcesso = selectedProcessoTemp.getIdEmpreendimentoLote().getNumProcesso();
                }

            } catch (Exception e) {
                msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Alterar", e.getMessage());
            }
        }
    }

    public String getColordes() {
        return colordes;
    }

    public void setColordes(String colordes) {
        this.colordes = colordes;
    }

    public String getCorletrades() {
        return corletrades;
    }

    public void setCorletrades(String corletrades) {
        this.corletrades = corletrades;
    }

    public void alteraSinal(ActionEvent event) {
        FacesContext ctx2 = FacesContext.getCurrentInstance();
        session = (HttpSession) ctx2.getExternalContext().getSession(false);
        try {
            String cFiltro = " status <> tip_status_sinal and tip_status_sinal <> 'A' ";
            session.setAttribute("filtroSinal", cFiltro);

            empreendimentoLazyModel = new LazyEmpreendimento(empreendimentoJpa);
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Filtro Efetuado com Sucesso!", "");
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Filtrar", e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void tiraSinal(ActionEvent event) {
        FacesContext ctx3 = FacesContext.getCurrentInstance();
        session = (HttpSession) ctx3.getExternalContext().getSession(false);

        try {
            session.removeAttribute("filtroSinal");
            empreendimentoLazyModel = new LazyEmpreendimento(empreendimentoJpa);
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Filtro Retirado com Sucesso!", "");
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Retirar Filtro", e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void calculaProcesso(ActionEvent event) throws IOException, EaoException {
        RequestContext context = RequestContext.getCurrentInstance();
        HttpURLConnection connection = null;
        BufferedReader reader = null;

        boolean lSair = false;
        boolean lInserir = false;
        boolean lErroUrl = false;
        int nIdSituacao = 0;
        int nInicial = 0;
        int nFinal = 0;
        String cProcesso = "nenhum";
        String line = null;
        String cDado = "";
        Date dData = null;
        String cAssColor = "normal-row";
        String cemp_ass = "#ffffff";
        String cemp_com = "#ffffff";
        String cemp_des = "#ffffff";
        String cemp_loc = "#ffffff";
        String cemp_proc = "#ffffff";
        String cemp_sit = "#ffffff";
        String cemp_err = "#ffffff";
        String cFiltro;

        int inicio;
        int fim;

        boolean lCancelar = false;
        boolean lPassa2 = false;
        boolean lPassa = false;

        String cUrl = "";

        try {
            selectedCarga = new Carga();
            selectedCarga.setIdCarga(1);
            selectedCarga.setDscCarga("CARGA SENDO EFETUADA EM: ");
            selectedCarga.setDatCarga(new Date());

            cargaEAO.edit(selectedCarga);

            Map<String, Object> filters = new HashMap<String, Object>();
            //filters.put("idEmpreendimento", "120");

            ctx = FacesContext.getCurrentInstance();
            session = (HttpSession) ctx.getExternalContext().getSession(true);
            try {
                Usuario usuarioAutenticado = (Usuario) session.getAttribute("usuarioAutenticado");
                session.setMaxInactiveInterval((100 * 320));
                session.setAttribute("usuarioAutenticado", usuarioAutenticado);
                session.setAttribute("nomUser", usuarioAutenticado.getNomUsuario());
            } catch (Exception e) {
                e.getMessage();
            }

            if (this.progress == null) {
                this.progress = 0;
            }

            nTotal = empreendimentoJpa.getCount("Empreendimento");

            if (empreendimentoLoteCarga.length > 0) {
                cFiltro = " id_empreendimento in (";
                for (int i = 0; i < empreendimentoLoteCarga.length; i++) {
                    this.selectedEmprendimentoLote = empreendimentoLoteCarga[i];
                    cFiltro += this.selectedEmprendimentoLote.getIdEmpreendimento().getIdEmpreendimento().toString() + ",";
                }
                cFiltro += "0) ";
            } else {
                cFiltro = null;
            }

            empreendimentoList = empreendimentoJpa.getNative("Empreendimento", 0, nTotal, null, false, filters, null, cFiltro);

            List<Empreendimento> empreendimentoListTemp = empreendimentoList;

            for (int i = 0; i < empreendimentoListTemp.size(); i++) {

                this.selectedEmprendimento = empreendimentoListTemp.get(i);

                //if (!this.selectedEmprendimento.getIdCliente().getStaCliente().equals("A") || (!this.selectedEmprendimento.getStaEmpreendimento().equals("A"))) {
                //empreendimentoList.remove(i);
                //} else {
                this.selectedEmprendimento.setEmpAss(cemp_ass);
                this.selectedEmprendimento.setEmpCom(cemp_com);
                this.selectedEmprendimento.setEmpDes(cemp_des);
                this.selectedEmprendimento.setEmpLoc(cemp_loc);
                this.selectedEmprendimento.setEmpProc(cemp_proc);
                this.selectedEmprendimento.setEmpSit(cemp_sit);
                this.selectedEmprendimento.setEmpErr(cemp_err);
                this.selectedEmprendimento.setEmpColor(cAssColor);

                for (int j = 0; j < this.selectedEmprendimento.getEmpreendimentoLoteList().size(); j++) {
                    this.selectedEmprendimentoLote = this.selectedEmprendimento.getEmpreendimentoLoteList().get(j);
                    this.selectedEmprendimentoLote.setEmpColor(cAssColor);

                    this.selectedEmprendimento.getEmpreendimentoLoteList().set(j, this.selectedEmprendimentoLote);
                }
                try {
                    empreendimentoJpa.edit(this.selectedEmprendimento);
                } catch (Exception e) {
                    e.getMessage();
                }
                //}
                this.progress = this.progress + 1;
                if (this.progress > 100) {
                    this.progress = 97;
                }

                context.update("frmProcesso:pnStatus");
                //context.update("frmProcesso:ajaxPB");
            }

            this.selectedEmprendimento = new Empreendimento();
            this.selectedEmprendimentoLote = new EmpreendimentoLote();
            this.progress = 0;

            for (int i = 0; i < empreendimentoList.size(); i++) {
                try {
                    cAssColor = "normal-row";
                    cemp_ass = "#ffffff";
                    cemp_com = "#ffffff";
                    cemp_des = "#ffffff";
                    cemp_loc = "#ffffff";
                    cemp_proc = "#ffffff";
                    cemp_sit = "#ffffff";
                    cemp_err = "#ffffff";

                    this.selectedEmprendimento = empreendimentoList.get(i);
                    Empreendimento empreendimentoTemp = empreendimentoList.get(i);

                    selectedEmprendimento.setEmpColor(cAssColor);
                    selectedEmprendimento.setEmpAss(cemp_ass);
                    selectedEmprendimento.setEmpCom(cemp_com);
                    selectedEmprendimento.setEmpDes(cemp_des);
                    selectedEmprendimento.setEmpLoc(cemp_loc);
                    selectedEmprendimento.setEmpProc(cemp_proc);
                    selectedEmprendimento.setEmpSit(cemp_sit);
                    selectedEmprendimento.setEmpErr(cemp_err);

                    empreendimentoLoteList = selectedEmprendimento.getEmpreendimentoLoteList();

                    int nTotal2 = empreendimentoLoteList.size();

                    for (int j = 0; j < empreendimentoLoteList.size(); j++) {
                        processoList = new ArrayList<Processo>();
                        processoSituacaoList = new ArrayList<ProcessoSituacao>();
                        List<ProcessoSituacao> processoSituacaoListTemp = new ArrayList<ProcessoSituacao>();

                        selectedEmprendimentoLote = new EmpreendimentoLote();
                        selectedProcesso = new Processo();
                        selectedProcessoSituacao = new ProcessoSituacao();
                        Processo selectedProcessoTemp = new Processo();
                        ProcessoSituacao selectedProcessoSituacaoTemp = new ProcessoSituacao();

                        selectedEmprendimentoLote = empreendimentoLoteList.get(j);

                        if (selectedEmprendimentoLote.getStatus().equals("A")) {

                            if (empreendimentoLoteList.get(j).getProcessoList().isEmpty()) {
                                lInserir = true;
                            } else {
                                String cSql = "select max(id_processo) as n_id "
                                        + "from empreendimento_lote a, processo  b "
                                        + "where a.id_empreendimento_lote = b.id_empreendimento_lote and "
                                        + "num_processo = '".concat(selectedEmprendimentoLote.getNumProcesso().concat("'"));
                                GetIdMax getIdMax = getIdMaxJpa.getNativeFiltro(cSql);

                                selectedProcessoTemp = processoJpa.getPorId(getIdMax.getnId());
                                lInserir = false;
                            }
                            processoSituacaoListTemp = selectedProcessoTemp.getProcessoSituacaoList();

                            String cNumProcesso = selectedEmprendimentoLote.getNumProcesso();
                            cNumProcesso = cNumProcesso.replace(".", "");
                            cNumProcesso = cNumProcesso.replace("-", "");

                            String cAno = cNumProcesso.substring(0, 4);
                            String cProc = cNumProcesso.substring(4, 11);
                            String cDac = cNumProcesso.substring(11);

                            if (processoSituacaoListTemp == null) {
                                processoSituacaoListTemp = new ArrayList<ProcessoSituacao>();
                            }

                            URL url = new URL("http://www3.prodam.sp.gov.br/simproc/navega.asp?numSimproc=".concat(cNumProcesso));
                            //URL url = new URL("http://www3.prodam.sp.gov.br/simproc/navega.asp?numSimproc=".concat("201303128906"));

                            lErroUrl = false;
                            for (int ij = 0; ij < 3; ij++) {
                                try {
                                    connection = (HttpURLConnection) url.openConnection();
                                    connection.setRequestProperty("Accept-Charset", "ISO-8859-1");
                                    connection.setRequestMethod("GET");
                                    connection.setRequestProperty("Content-Type", "text/plain");
                                    connection.connect();

                                    reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                                    lErroUrl = false;
                                    break;
                                } catch (Exception e) {
                                    //System.out.println("Erro de Carregamento - " + e.getMessage());
                                    Logger.getLogger(ProcessoBean.class.getName()).log(Level.SEVERE, null, e);
                                    lErroUrl = true;
                                }
                            }

                            if (lErroUrl) {
                                cemp_err = "#000000";
                                cAssColor = "err-row";

                                selectedEmprendimento.setEmpColor(cAssColor);
                                selectedEmprendimento.setEmpAss(cemp_ass);
                                selectedEmprendimento.setEmpCom(cemp_com);
                                selectedEmprendimento.setEmpDes(cemp_des);
                                selectedEmprendimento.setEmpLoc(cemp_loc);
                                selectedEmprendimento.setEmpProc(cemp_proc);
                                selectedEmprendimento.setEmpSit(cemp_sit);
                                selectedEmprendimento.setEmpErr(cemp_err);
                                selectedEmprendimento.setDatUpdate(new Date());

                                selectedEmprendimentoLote.setIdEmpreendimento(selectedEmprendimento);
                                selectedEmprendimentoLote.setEmpColor(cAssColor);

                                selectedEmprendimento.getEmpreendimentoLoteList().set(j, selectedEmprendimentoLote);

                                empreendimentoJpa.edit(selectedEmprendimento);
                                break;
                            }
                            line = " ";
                            nInicial = 0;
                            nFinal = 0;
                            cDado = " ";
                            dData = null;
                            cProcesso = "nenhum";

                            if (reader != null) {
                                while ((line = reader.readLine()) != null) {
                                    lErroUrl = false;
                                    if (line.indexOf("FORA DO AR") >= 0) {
                                        msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ATENÇÃO ... SITE FORA DO AR ... TENTE MAIS TARDE ...", "");
                                        lCancelar = true;
                                        lErroUrl = true;
                                    } else if (line.indexOf("não encontrado") >= 0) {
                                        msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ATENÇÃO ... SITE FORA DO AR ... TENTE MAIS TARDE ...", "");
                                        lCancelar = true;
                                        lErroUrl = true;
                                    }
                                    if (lErroUrl) {
                                        cemp_err = "#000000";
                                        cAssColor = "err-row";

                                        selectedEmprendimento.setEmpColor(cAssColor);
                                        selectedEmprendimento.setEmpAss(cemp_ass);
                                        selectedEmprendimento.setEmpCom(cemp_com);
                                        selectedEmprendimento.setEmpDes(cemp_des);
                                        selectedEmprendimento.setEmpLoc(cemp_loc);
                                        selectedEmprendimento.setEmpProc(cemp_proc);
                                        selectedEmprendimento.setEmpSit(cemp_sit);
                                        selectedEmprendimento.setEmpErr(cemp_err);
                                        selectedEmprendimento.setDatUpdate(new Date());

                                        selectedEmprendimentoLote.setIdEmpreendimento(selectedEmprendimento);
                                        selectedEmprendimentoLote.setEmpColor(cAssColor);

                                        selectedEmprendimento.getEmpreendimentoLoteList().set(j, selectedEmprendimentoLote);

                                        empreendimentoJpa.edit(selectedEmprendimento);
                                        break;
                                    } else {
                                        // VERIFICA COMUNIQUE-SE
                                        cUrl = "";
                                        lPassa2 = false;
                                        lPassa = false;
                                        if (line != null) {
                                            if (line.indexOf("Acessa Comunique-se") >= 0) {
                                                lPassa = true;
                                                //MM_openBrWindow('
                                                nInicial = line.indexOf("MM_openBrWindow('") + 17;
                                                nFinal = line.indexOf("','");
                                                cUrl = line.substring(nInicial, nFinal).trim();
                                                if (!cUrl.contains("http://www3")) {
                                                    cUrl = "http://www3.prodam.sp.gov.br/simproc/".concat(cUrl);
                                                    lPassa2 = true;
                                                }
                                                BufferedReader readerDespacho = null;
                                                HttpURLConnection connectionDespacho = null;
                                                //INICIO GRAVA COMUNIQUE-SE
                                                if (lPassa) {
                                                    lPassa = false;
                                                    try {
                                                        cProcesso = "POS-ASSUNTOS SOLICITADOS";

                                                        if (readerDespacho != null) {
                                                            readerDespacho.close();
                                                        }

                                                        //url = new URL("http://www3.prefeitura.sp.gov.br/sisacoe/comuniq.asp?ANO=".concat(cAno).concat("&PROC=").concat(cProc).concat("&DAC=").concat(cDac));
                                                        URL urlDespacho = url;
                                                        urlDespacho = new URL(cUrl);
                                                        readerDespacho = null;

                                                        connectionDespacho = (HttpURLConnection) urlDespacho.openConnection();
                                                        connectionDespacho.setRequestProperty("Accept-Charset", "ISO-8859-1");
                                                        connectionDespacho.setRequestMethod("GET");
                                                        connectionDespacho.setRequestProperty("Content-Type", "text/plain");
                                                        connectionDespacho.connect();

                                                        readerDespacho = new BufferedReader(new InputStreamReader(connectionDespacho.getInputStream()));

                                                        String lineDespacho;

                                                        String cTexto = "";
                                                        while ((lineDespacho = readerDespacho.readLine()) != null) {
                                                            if (lineDespacho.indexOf("não encontrado") >= 0) {
                                                                break;
                                                            }
                                                            if (lineDespacho.indexOf("FORA DO AR") >= 0) {
                                                                break;
                                                            }
                                                            cProcesso = "COMUNIQUE-SE";

                                                            if (lineDespacho.indexOf("do Comunique-se:") >= 0) {
                                                                lineDespacho = readerDespacho.readLine();
                                                                nInicial = lineDespacho.indexOf("size=\"2\">") + 9;
                                                                nFinal = lineDespacho.toUpperCase().indexOf("</font>".toUpperCase());
                                                                cDado = lineDespacho.substring(nInicial, nFinal).trim();
                                                                selectedProcesso.setComNumero(cDado);
                                                                //lPassa = true;
                                                            }
                                                            if (lineDespacho.indexOf("no D.O.M.:") >= 0) {

                                                                if (lPassa2) {
                                                                    nFinal = lineDespacho.toUpperCase().indexOf("</font>".toUpperCase());
                                                                    nInicial = nFinal - 10;
                                                                } else {
                                                                    lPassa = true;
                                                                    lineDespacho = readerDespacho.readLine();
                                                                    nInicial = lineDespacho.indexOf("size=\"2\">") + 9;
                                                                    nFinal = lineDespacho.toUpperCase().indexOf("</font>".toUpperCase());

                                                                }
                                                                cDado = lineDespacho.substring(nInicial, nFinal).trim();
                                                                cDado = cDado.replace("-", "/");
                                                                dData = funcoes.ConverteData(cDado);

                                                                selectedProcesso.setComData(dData);
                                                            }

                                                            // GRAVACAO NOVO COMUNIQUE-SE
                                                            if (lPassa2) {
                                                                if (lineDespacho.indexOf("size=\"1\">") >= 0) {
                                                                    nInicial = lineDespacho.indexOf("size=\"1\">") + 9;
                                                                    nFinal = lineDespacho.toUpperCase().indexOf("</font>".toUpperCase());
                                                                    cTexto = "";

                                                                    if (nFinal > 0) {
                                                                        cDado = lineDespacho.substring(nInicial, nFinal).trim();

                                                                        cDado = cDado.replace("<br>", "");

                                                                        cTexto = cTexto.concat(cDado).concat("\n").trim();

                                                                        selectedProcesso.setComTexto(cTexto);
                                                                        //break;
                                                                    }
                                                                }
                                                            }

                                                            if (lPassa) {
                                                                if (lineDespacho.indexOf("size=\"1\">") >= 0) {
                                                                    nInicial = lineDespacho.indexOf("size=\"1\">") + 9;
                                                                    nFinal = lineDespacho.toUpperCase().indexOf("</font>".toUpperCase());
                                                                    cDado = lineDespacho.substring(nInicial, nFinal).trim();

                                                                    cTexto = cTexto.concat(cDado).concat("\n");

                                                                    selectedProcesso.setComTexto(cTexto);
                                                                    //break;
                                                                }
                                                            }
                                                        }
                                                    } catch (Exception e) {
                                                        //System.out.println("Erro de Carregamento - " + e.getMessage());
                                                        Logger.getLogger(ProcessoBean.class.getName()).log(Level.SEVERE, null, e);
                                                    } finally {
                                                        if (readerDespacho != null) {
                                                            readerDespacho.close();
                                                        }
                                                        connectionDespacho.disconnect();
                                                    }
                                                }
                                                //FIM GRAVA COMUNIQUE-SE
                                            }
                                        }
                                        //LOCALIZACAO
                                        if (line.indexOf("Unidade") >= 0) {
                                            cProcesso = "LOCALIZACAO";
                                            //Unidade
                                            line = reader.readLine();

                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setLocUnidade(cDado);

                                            //Desde
                                            line = reader.readLine();
                                            line = reader.readLine();

                                            line = reader.readLine();

                                            nInicial = line.indexOf("</font>") + 7;
                                            nFinal = nInicial + 10;
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            cDado = cDado.replace("-", "/");

                                            dData = funcoes.ConverteData(cDado);
                                            selectedProcesso.setLocDatDesde(dData);

                                            //Nome
                                            line = reader.readLine();

                                            line = reader.readLine();

                                            line = reader.readLine();

                                            line = reader.readLine();

                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setLocDescricao(cDado);

                                            // Em Transito
                                            line = reader.readLine();

                                            line = reader.readLine();

                                            line = reader.readLine();

                                            nInicial = line.indexOf("size=\"1\"><b>") + 12;
                                            nFinal = line.indexOf("</b></font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setLocTransito(cDado);

                                            //Endereco
                                            line = reader.readLine();

                                            line = reader.readLine();

                                            line = reader.readLine();

                                            line = reader.readLine();

                                            line = reader.readLine();

                                            cDado = line.trim();
                                            selectedProcesso.setLocEndereco(cDado);

                                            //Bairro
                                            line = reader.readLine();

                                            line = reader.readLine();

                                            line = reader.readLine();

                                            line = reader.readLine();

                                            nInicial = line.indexOf("<font color=\"#ffffff\">...</font>") + 32;
                                            nFinal = line.indexOf("</font></td>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setLocBairro(cDado);

                                            //Funcionario
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine(); // aqui

                                            if (line.indexOf("Telefone:") >= 0) {
                                                //Telefone
                                                line = reader.readLine();

                                                nInicial = line.indexOf("size=\"1\">") + 9;
                                                nFinal = line.indexOf("</font>");
                                                cDado = line.substring(nInicial, nFinal).trim();
                                                selectedProcesso.setLocTelefone(cDado);

                                                //Ramal
                                                line = reader.readLine();

                                                line = reader.readLine();

                                                nInicial = line.indexOf("size=\"1\">") + 9;
                                                nFinal = line.indexOf("</font>");
                                                cDado = line.substring(nInicial, nFinal).trim();
                                                selectedProcesso.setLocRamal(cDado);

                                                // E-Mail
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                if (line.indexOf("E-mail:") >= 0) {
                                                    line = reader.readLine();
                                                    nInicial = line.indexOf("size=\"1\">") + 9;
                                                    nFinal = line.indexOf("</font>");
                                                    cDado = line.substring(nInicial, nFinal).trim();
                                                    selectedProcesso.setLocEmail(cDado);

                                                }
                                            } else {
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                cDado = line.trim();
                                                selectedProcesso.setLocFunciionario(cDado);

                                                //RF
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                cDado = line.trim();
                                                selectedProcesso.setLocRf(cDado);

                                                //Telefone
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                nInicial = line.indexOf("size=\"1\">") + 9;
                                                nFinal = line.indexOf("</font>");
                                                cDado = line.substring(nInicial, nFinal).trim();
                                                selectedProcesso.setLocTelefone(cDado);

                                                //Ramal
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                nInicial = line.indexOf("size=\"1\">") + 9;
                                                nFinal = line.indexOf("</font>");
                                                cDado = line.substring(nInicial, nFinal).trim();
                                                selectedProcesso.setLocRamal(cDado);

                                                // E-Mail
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                if (line.indexOf("E-mail:") >= 0) {
                                                    line = reader.readLine();
                                                    nInicial = line.indexOf("size=\"1\">") + 9;
                                                    nFinal = line.indexOf("</font>");
                                                    cDado = line.substring(nInicial, nFinal).trim();
                                                    selectedProcesso.setLocEmail(cDado);

                                                }
                                            }

                                        }
                                        cProcesso = "POS-LOCALIZACAO";
                                        //SITUACAO
                                        if (line.indexOf("Situa&ccedil;&atilde;o:") >= 0) {
                                            cProcesso = "SITUACAO";
                                            //Situacao
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            cDado = cDado.replace("-", "/");

                                            dData = funcoes.ConverteData(cDado);
                                            selectedProcesso.setSitDataSituacao(dData);

                                            //Descricao
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setSitDescricao(cDado);

                                            //Despacho
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setSitDespacho(cDado);

                                            //Data
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            cDado = cDado.replace("-", "/");

                                            dData = funcoes.ConverteData(cDado);
                                            selectedProcesso.setSitSituacaoDataDescricao(dData);

                                            //D.O.M
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setSitDom(cDado);

                                            //Comunique-se
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setSitComunique(cDado);

                                            //Vencimento
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            cDado = cDado.replace("-", "/");

                                            dData = funcoes.ConverteData(cDado);
                                            selectedProcesso.setSitVencimento(dData);

                                        }
                                        cProcesso = "POS-SITUACAO";
                                        //DADOS DO PROCESSO
                                        if (line.indexOf("Assunto:") >= 0) {
                                            cProcesso = "PROCESSO";
                                            //Assunto
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setProcAssunto(cDado);

                                            //Motivo
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setProcMotivo(cDado);

                                            //Interessado
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            selectedProcesso.setProcInteressado(cDado);

                                        }
                                        cProcesso = "POS-PROCESSO";
                                        //ASSUNTOS SOLICITADOS
                                        if (line.indexOf("SOLICITADOS</font></b></td>") >= 0) {
                                            cProcesso = "ASSUNTOS SOLICITADOS";
                                            selectedProcessoSituacao = new ProcessoSituacao();
                                            selectedProcessoSituacao.setIdSituacao(null);

                                            //Assuntos
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();

                                            cDado = line.trim();
                                            if (!cDado.equals("</tr>")) {
                                                selectedProcessoSituacao.setAssDescricao(cDado);

                                                //Situacao
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                line = reader.readLine();
                                                nInicial = line.indexOf("size=\"1\">") + 9;
                                                nFinal = line.indexOf("</font>");
                                                cDado = line.substring(nInicial, nFinal).trim();
                                                selectedProcessoSituacao.setAssSituacao(cDado);

                                                //DOM
                                                line = reader.readLine();
                                                nInicial = line.indexOf("size=\"1\">") + 9;
                                                nFinal = line.indexOf("</font>");
                                                cDado = line.substring(nInicial, nFinal).trim();
                                                selectedProcessoSituacao.setAssTipo(cDado);

                                                //DOM DATA
                                                line = reader.readLine();
                                                nInicial = line.indexOf("size=\"1\">") + 9;
                                                nFinal = line.indexOf("</font>");
                                                cDado = line.substring(nInicial, nFinal).trim();
                                                cDado = cDado.replace("-", "/");

                                                dData = funcoes.ConverteData(cDado);
                                                selectedProcessoSituacao.setAssData(dData);
                                                selectedProcessoSituacao.setAssColor("ass-row");

                                                processoSituacaoList.add(selectedProcessoSituacao);

                                                lSair = true;

                                                while ((line = reader.readLine()) != null) {
                                                    nIdSituacao = nIdSituacao + 1;
                                                    selectedProcessoSituacao = new ProcessoSituacao();
                                                    selectedProcessoSituacao.setIdSituacao(null);

                                                    //SITUACAO 2
                                                    line = reader.readLine();
                                                    line = reader.readLine();
                                                    line = reader.readLine();
                                                    line = reader.readLine();
                                                    line = reader.readLine();
                                                    line = reader.readLine();
                                                    line = reader.readLine();
                                                    if (line.indexOf("size=\"1\">") >= 0) {
                                                        line = reader.readLine();
                                                        cDado = line.trim();
                                                        selectedProcessoSituacao.setAssDescricao(cDado);

                                                        line = reader.readLine();
                                                        line = reader.readLine();
                                                        line = reader.readLine();
                                                        line = reader.readLine();
                                                        line = reader.readLine();
                                                        line = reader.readLine();
                                                        nInicial = line.indexOf("size=\"1\">") + 9;
                                                        nFinal = line.indexOf("</font>");
                                                        cDado = line.substring(nInicial, nFinal).trim();
                                                        selectedProcessoSituacao.setAssSituacao(cDado);

                                                        //DOM 2
                                                        line = reader.readLine();
                                                        nInicial = line.indexOf("size=\"1\">") + 9;
                                                        nFinal = line.indexOf("</font>");
                                                        cDado = line.substring(nInicial, nFinal).trim();
                                                        selectedProcessoSituacao.setAssTipo(cDado);

                                                        //DOM DATA
                                                        line = reader.readLine();
                                                        nInicial = line.indexOf("size=\"1\">") + 9;
                                                        nFinal = line.indexOf("</font>");
                                                        cDado = line.substring(nInicial, nFinal).trim();
                                                        cDado = cDado.replace("-", "/");

                                                        dData = funcoes.ConverteData(cDado);
                                                        selectedProcessoSituacao.setAssData(dData);
                                                        selectedProcessoSituacao.setAssColor("ass-row");

                                                        processoSituacaoList.add(selectedProcessoSituacao);
                                                    } else {
                                                        break;
                                                    }
                                                }
                                            } else {
                                                lSair = true;
                                            }

                                        }
                                    }

                                    if (lSair) {
                                        break;
                                    }
                                }

                                if (lCancelar) {
                                    break;
                                }
                            }

                            // DESPACHO
                            if (!lCancelar) {
                                try {
                                    cProcesso = "POS-COMUNIQUE-SE";
                                    if (reader != null) {
                                        reader.close();
                                    }
                                    connection.disconnect();

                                    url = new URL("http://www3.prefeitura.sp.gov.br/sisacoe/despacho/despac.asp?ANO=".concat(cAno).concat("&PROC=").concat(cProc).concat("&DAC=").concat(cDac));

                                    reader = null;

                                    connection = (HttpURLConnection) url.openConnection();
                                    connection.setRequestProperty("Accept-Charset", "ISO-8859-1");
                                    connection.setRequestMethod("GET");
                                    connection.setRequestProperty("Content-Type", "text/plain");
                                    connection.connect();

                                    reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

                                    line = null;
                                    lPassa = false;
                                    String cTexto = "";
                                    while ((line = reader.readLine()) != null) {
                                        if (line.indexOf("não encontrado") >= 0) {

                                            break;
                                        }
                                        if (line.indexOf("FORA DO AR") >= 0) {

                                            break;
                                        }
                                        cProcesso = "DESPACHO";
                                        if (line.indexOf("Processo:") >= 0) {
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();

                                            if (line.indexOf("Prefeitura") >= 0) {
                                                break;
                                            }
                                            nInicial = line.indexOf("size=\"2\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();

                                            selectedProcesso.setDesDescricao(cDado);
                                        }
                                        if (line.indexOf("DESPACHO:") >= 0) {
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();

                                            selectedProcesso.setDesDespacho(cDado);
                                        }
                                        if (line.indexOf("Data do D.O.M.:") >= 0) {
                                            line = reader.readLine();
                                            nInicial = line.indexOf("size=\"1\">") + 9;
                                            nFinal = line.indexOf("</font>");
                                            cDado = line.substring(nInicial, nFinal).trim();
                                            cDado = cDado.replace("-", "/");

                                            dData = funcoes.ConverteData(cDado);

                                            selectedProcesso.setDesData(dData);
                                            lPassa = true;
                                        }
                                        if (lPassa) {
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            line = reader.readLine();
                                            if (line.indexOf("size=\"1\">") >= 0) {
                                                nInicial = line.indexOf("size=\"1\">") + 9;
                                                nFinal = line.indexOf("</font>");
                                                cDado = line.substring(nInicial, nFinal).trim();

                                                selectedProcesso.setDesMotivo(cDado);
                                            }
                                            break;
                                        }
                                    }
                                } catch (Exception e) {
                                    //System.out.println("Erro de Carregamento - " + e.getMessage());
                                    Logger.getLogger(ProcessoBean.class.getName()).log(Level.SEVERE, null, e);
                                } finally {
                                    if (reader != null) {
                                        reader.close();
                                    }
                                    connection.disconnect();
                                }
                            }

                            lSair = false;
                            boolean lSituacao = false;
                            boolean lProcesso = false;
                            cProcesso = "FINAL ANTES DE PROCESSAR";

                            if (!lInserir) {
                                // Atualiza os dados do processo
                                cAssColor = "normal-row";
                                if (processoSituacaoListTemp.size() < processoSituacaoList.size()) {
                                    lSituacao = true;
                                    if (lSituacao) {
                                        cAssColor = "ass-row";
                                        cemp_ass = "yellow";
                                    }
                                    cProcesso = "ASSUNTO MENOR ASSUNTO";
                                    for (int l = 0; l < processoSituacaoList.size(); l++) {
                                        selectedProcessoSituacao = processoSituacaoList.get(l);
                                        selectedProcessoSituacao.setAssColor(cAssColor);
                                        processoSituacaoList.set(l, selectedProcessoSituacao);
                                    }

                                } else {
                                    if (!processoSituacaoListTemp.isEmpty()) {
                                        lSituacao = false;
                                        for (int l = 0; l < processoSituacaoListTemp.size(); l++) {
                                            try {
                                                selectedProcessoSituacao = processoSituacaoList.get(l);
                                            } catch (Exception exs) {
                                                break;
                                            }

                                            selectedProcessoSituacaoTemp = processoSituacaoListTemp.get(l);

                                            if (funcoes.ComparaString(selectedProcessoSituacaoTemp.getAssDescricao(), selectedProcessoSituacao.getAssDescricao())) {
                                                lSituacao = true;
                                            }
                                            if (funcoes.ComparaString(selectedProcessoSituacaoTemp.getAssSituacao(), selectedProcessoSituacao.getAssSituacao())) {
                                                lSituacao = true;
                                            }
                                            if (funcoes.ComparaString(selectedProcessoSituacaoTemp.getAssTipo(), selectedProcessoSituacao.getAssTipo())) {
                                                lSituacao = true;
                                            }
                                            if (funcoes.ComparaData(selectedProcessoSituacaoTemp.getAssData(), selectedProcessoSituacao.getAssData())) {
                                                lSituacao = true;
                                            }
                                            if (lSituacao) {
                                                cAssColor = "ass-row";
                                                cemp_ass = "yellow";

                                                cProcesso = "ATUALIZA ALTERACAO ASSUNTO";
                                                selectedProcessoSituacao.setAssColor(cAssColor);
                                                selectedProcesso.setEmpColor(cAssColor);
                                                processoSituacaoList.set(l, selectedProcessoSituacao);
                                            }
                                        }
                                    }
                                }

                                lProcesso = false;

                                //cAssColor = "normal-row";
                                //cemp_ass = "#ffffff";
                                //cemp_com = "#ffffff";
                                //cemp_des = "#ffffff";
                                //cemp_loc = "#ffffff";
                                //cemp_proc = "#ffffff";
                                //cemp_sit = "#ffffff";
                                if (new CompareToBuilder().append(selectedProcesso.getLocBairro(), selectedProcessoTemp.getLocBairro()).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(funcoes.ConverteDateString(selectedProcesso.getLocDatDesde()), funcoes.ConverteDateString(selectedProcessoTemp.getLocDatDesde())).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getLocDescricao(), selectedProcessoTemp.getLocDescricao()).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getLocEmail(), selectedProcessoTemp.getLocEmail()).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getLocEndereco(), selectedProcessoTemp.getLocEndereco()).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getLocFunciionario(), selectedProcessoTemp.getLocFunciionario()).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getLocRamal(), selectedProcessoTemp.getLocRamal()).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getLocRf(), selectedProcessoTemp.getLocRf()).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getLocTelefone(), selectedProcessoTemp.getLocTelefone()).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getLocTransito(), selectedProcessoTemp.getLocTransito()).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getLocUnidade(), selectedProcessoTemp.getLocUnidade()).toComparison() != 0) {
                                    cAssColor = "loc-row";
                                    cemp_loc = "lightblue";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getProcAssunto(), selectedProcessoTemp.getProcAssunto()).toComparison() != 0) {
                                    if (selectedProcesso.getProcAssunto() != null) {
                                        cAssColor = "proc-row";
                                        cemp_proc = "#CCCCCC";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getProcInteressado(), selectedProcessoTemp.getProcInteressado()).toComparison() != 0) {
                                    if (selectedProcesso.getProcAssunto() != null) {
                                        cAssColor = "proc-row";
                                        cemp_proc = "#CCCCCC";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getProcMotivo(), selectedProcessoTemp.getProcMotivo()).toComparison() != 0) {
                                    if (selectedProcesso.getProcAssunto() != null) {
                                        cAssColor = "proc-row";
                                        cemp_proc = "#CCCCCC";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getSitComunique(), selectedProcessoTemp.getSitComunique()).toComparison() != 0) {
                                    if (selectedProcesso.getProcAssunto() != null) {
                                        cAssColor = "proc-row";
                                        cemp_proc = "#CCCCCC";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getSitDataSituacao(), selectedProcessoTemp.getSitDataSituacao()).toComparison() != 0) {
                                    cAssColor = "sit-row";
                                    cemp_sit = "#c299a3";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getSitDescricao(), selectedProcessoTemp.getSitDescricao()).toComparison() != 0) {
                                    cAssColor = "sit-row";
                                    cemp_sit = "#c299a3";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getSitDespacho(), selectedProcessoTemp.getSitDespacho()).toComparison() != 0) {
                                    cAssColor = "sit-row";
                                    cemp_sit = "#c299a3";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getSitDom(), selectedProcessoTemp.getSitDom()).toComparison() != 0) {
                                    cAssColor = "sit-row";
                                    cemp_sit = "#c299a3";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getSitSituacaoDataDescricao(), selectedProcessoTemp.getSitSituacaoDataDescricao()).toComparison() != 0) {
                                    cAssColor = "sit-row";
                                    cemp_sit = "#c299a3";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getSitVencimento(), selectedProcessoTemp.getSitVencimento()).toComparison() != 0) {
                                    cAssColor = "sit-row";
                                    cemp_sit = "#c299a3";
                                    selectedProcesso.setEmpColor(cAssColor);
                                    lProcesso = true;
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getComData(), selectedProcessoTemp.getComData()).toComparison() != 0) {
                                    if (selectedProcesso.getComData() != null) {
                                        cAssColor = "com-row";
                                        cemp_com = "#ff0022";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getComNumero(), selectedProcessoTemp.getComNumero()).toComparison() != 0) {
                                    if (selectedProcesso.getComNumero() != null) {
                                        cAssColor = "com-row";
                                        cemp_com = "#ff0022";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getComTexto(), selectedProcessoTemp.getComTexto()).toComparison() != 0) {
                                    if (selectedProcesso.getComTexto() != null) {
                                        cAssColor = "com-row";
                                        cemp_com = "#ff0022";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getDesDescricao(), selectedProcessoTemp.getDesDescricao()).toComparison() != 0) {
                                    if (selectedProcesso.getDesDescricao() != null) {
                                        cAssColor = "des-row";
                                        cemp_des = "#DC8700";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getDesDespacho(), selectedProcessoTemp.getDesDespacho()).toComparison() != 0) {
                                    if (selectedProcesso.getDesDespacho() != null) {
                                        cAssColor = "des-row";
                                        cemp_des = "#DC8700";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getDesData(), selectedProcessoTemp.getDesData()).toComparison() != 0) {
                                    if (selectedProcesso.getDesData() != null) {
                                        cAssColor = "des-row";
                                        cemp_des = "#DC8700";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }
                                if (new CompareToBuilder().append(selectedProcesso.getDesMotivo(), selectedProcessoTemp.getDesMotivo()).toComparison() != 0) {
                                    if (selectedProcesso.getDesMotivo() != null) {
                                        cAssColor = "des-row";
                                        cemp_des = "#DC8700";
                                        selectedProcesso.setEmpColor(cAssColor);
                                        lProcesso = true;
                                    }
                                }

                            }

                            selectedProcesso.setEmpColor(cAssColor);

                            selectedEmprendimento.setEmpColor(cAssColor);

                            selectedEmprendimentoLote.setIdEmpreendimento(selectedEmprendimento);
                            selectedEmprendimentoLote.setEmpColor(cAssColor);
                            if (selectedEmprendimentoLote.getTipStatusSinal() == null) {
                                selectedEmprendimentoLote.setTipStatusSinal("A");
                            }

                            Date dataAtual = new Date();
                            if (selectedEmprendimentoLote.getTipStatusSinal() == null) {
                                selectedEmprendimentoLote.setTipStatusSinal("A");
                            }

                            if (!lCancelar) {
                                if (lInserir || lProcesso || lSituacao) {
                                    selectedProcesso.setIdProcesso(null);
                                    selectedProcesso.setDatUpdate(dataAtual);
                                    selectedProcesso.setIdEmpreendimentoLote(selectedEmprendimentoLote);
                                    selectedProcesso.setProcessoSituacaoList(null);

                                    for (int k = 0; k < processoSituacaoList.size(); k++) {
                                        selectedProcessoSituacao = processoSituacaoList.get(k);
                                        selectedProcessoSituacao.setIdSituacao(null);
                                        selectedProcessoSituacao.setIdProcesso(selectedProcesso);
                                    }
                                    selectedProcesso.setProcessoSituacaoList(processoSituacaoList);
                                    selectedEmprendimentoLote.getProcessoList().add(selectedProcesso);

                                    selectedEmprendimentoLote.setDatUpdateLote(dataAtual);
                                    selectedEmprendimentoLote.setEmpColor(cAssColor);

                                    selectedEmprendimento.setDatUpdate(dataAtual);
                                }

                                if (!cemp_ass.equals("#ffffff") || !cemp_com.equals("#ffffff") || !cemp_des.equals("#ffffff")
                                        || !cemp_loc.equals("#ffffff") || !cemp_proc.equals("#ffffff") || !cemp_sit.equals("#ffffff") || lInserir) {

                                    empreendimentoLoteList.set(j, selectedEmprendimentoLote);
                                    selectedEmprendimento.setEmpreendimentoLoteList(empreendimentoLoteList);

                                    if (lInserir) {
                                        cAssColor = "normal-row";
                                        cemp_ass = "#ffffff";
                                        cemp_com = "#ffffff";
                                        cemp_des = "#ffffff";
                                        cemp_loc = "#ffffff";
                                        cemp_proc = "#ffffff";
                                        cemp_sit = "#ffffff";

                                        for (int p = 0; p < this.selectedEmprendimento.getEmpreendimentoLoteList().size(); p++) {
                                            EmpreendimentoLote empreendimentoLote = this.selectedEmprendimento.getEmpreendimentoLoteList().get(p);
                                            empreendimentoLote.setEmpColor(cAssColor);

                                            for (int q = 0; q < empreendimentoLote.getProcessoList().size(); q++) {
                                                Processo processo = empreendimentoLote.getProcessoList().get(q);
                                                processo.setEmpColor(cAssColor);

                                                for (int r = 0; r < processo.getProcessoSituacaoList().size(); r++) {
                                                    ProcessoSituacao processoSituacao = processo.getProcessoSituacaoList().get(r);
                                                    processoSituacao.setAssColor(cAssColor);

                                                    processo.getProcessoSituacaoList().set(r, processoSituacao);
                                                }
                                                empreendimentoLote.getProcessoList().set(q, processo);
                                            }
                                            this.selectedEmprendimento.getEmpreendimentoLoteList().set(p, empreendimentoLote);
                                        }
                                    }

                                    selectedEmprendimento.setEmpColor(cAssColor);
                                    selectedEmprendimento.setEmpAss(cemp_ass);
                                    selectedEmprendimento.setEmpCom(cemp_com);
                                    selectedEmprendimento.setEmpDes(cemp_des);
                                    selectedEmprendimento.setEmpLoc(cemp_loc);
                                    selectedEmprendimento.setEmpProc(cemp_proc);
                                    selectedEmprendimento.setEmpSit(cemp_sit);
                                    selectedEmprendimento.setEmpErr(cemp_err);

                                    try {
                                        if (selectedProcesso.getProcMotivo() != null) {
                                            empreendimentoJpa.edit(selectedEmprendimento);
                                            alterarObs();
                                        }
                                    } catch (Exception e) {
                                        e.getMessage();
                                    }

                                }

                                cAssColor = "normal-row";
                                cemp_ass = "#ffffff";
                                cemp_com = "#ffffff";
                                cemp_des = "#ffffff";
                                cemp_loc = "#ffffff";
                                cemp_proc = "#ffffff";
                                cemp_sit = "#ffffff";
                                cemp_err = "#ffffff";

                                lInserir = false;
                                lSituacao = false;
                                lProcesso = false;
                                lErroUrl = false;
                            }
                        }
                    }
                } catch (Exception exs) {
                    //System.out.println("Erro de Carregamento - " + exs.getMessage());
                    Logger.getLogger(ProcessoBean.class.getName()).log(Level.SEVERE, null, exs);
                }
                lCancelar = false;
                lErroUrl = false;
                //break;

                this.progress = this.progress + 1;
                if (this.progress > 100) {
                    this.progress = 97;
                }

                context.update("frmProcesso:pnStatus");
                //context.update("frmProcesso:ajaxPB");
            }

            // arualiza acoes e datas
            // alterarObs();
            // Atualiza COMUNIQUE-SE
            cSql = "update empreendimento "
                    + "set emp_com = '#ff0022' "
                    + "where id_empreendimento in (select id_empreendimento "
                    + "from empreendimento_lote a, processo b "
                    + "where a.id_empreendimento_lote = b.id_empreendimento_lote and dat_atendido is null and length(trim(com_texto)) > 0)";

            empreendimentoJpa.executeUpdate(cSql, null, null);

            // ATUALIZA DADA DA CARGA
            selectedCarga = new Carga();
            selectedCarga.setIdCarga(1);
            selectedCarga.setDscCarga("ULTIMA CARGA EFETUADA EM: ");
            selectedCarga.setDatCarga(new Date());

            cargaEAO.edit(selectedCarga);

            /*
             cSql = "update empreendimento_lote "
             + "set emp_color = 'com-row' "
             + "where id_empreendimento_lote in (select id_empreendimento_lote "
             + "from processo "
             + "where dat_atendido is null and com_numero is not NULL)";

             empreendimentoJpa.executeUpdate(cSql, null, null);

             cSql = "update processo "
             + "set emp_color = 'com-row' "
             + "where dat_atendido is null and com_numero is not NULL";
             empreendimentoJpa.executeUpdate(cSql, null, null);


             cSql = "update processo "
             + "set emp_color = 'normal-row' "
             + "where emp_color is null ";
             processoJpa.executeUpdate(cSql, null, null);

             cSql = "update empreendimento_lote "
             + "set emp_color = 'normal-row' "
             + "where emp_color is null ";
             empreendimentoLoteJpa.executeUpdate(cSql, null, null);

             cSql = "update empreendimento "
             + "set emp_color = 'normal-row' "
             + "where emp_color is null ";
             empreendimentoJpa.executeUpdate(cSql, null, null);
             */
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Processo Efetuado com Sucesso!", "");
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO ... Carga não Efetuada!", "");
        } finally {
            session.invalidate();
            ctx = FacesContext.getCurrentInstance();
            session = (HttpSession) ctx.getExternalContext().getSession(true);
            session.setMaxInactiveInterval(60 * 30);
            session.setAttribute("usuarioAutenticado", usuarioAutenticado);
            session.setAttribute("nomUser", usuarioAutenticado.getNomUsuario());

            this.atualiza = true;

            try {
                connection.disconnect();
                reader.close();

            } catch (Exception ex) {
                //System.out.println("Erro de Desligamento - " + ex.getMessage());
                Logger.getLogger(ProcessoBean.class.getName()).log(Level.SEVERE, null, ex);
            }

            FacesContext.getCurrentInstance().addMessage(null, msg);
            LoginBean.AtualizaLog("", "CARGA EFETUADA COM SUCESSO");
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/home.jsf");
        }
    }

    public Integer getProgress() {
        if (progress == null) {
            progress = 0;
        }

        return progress;
    }

    public void setProgress(Integer progress) {
        this.progress = progress;
    }

    public void onComplete() {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Progresso Completado", "Carga Completa"));
    }

    public String getTipRel() {
        return tipRel;
    }

    public void setTipRel(String tipRel) {
        this.tipRel = tipRel;
    }

    public void reportCreate(ActionEvent ae) {

        String url = "/relatorio";
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            ServletContext sc = (ServletContext) context.getExternalContext().getContext();
            RequestDispatcher rd = sc.getRequestDispatcher(url);

            HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
            HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

            //parametros para geraçao do relatorio  
            request.setAttribute("tipRel", tipRel + "");
            request.setAttribute("tipStatus", statusRel + "");
            request.setAttribute("tipSituacao", situacaoRel + "");
            request.setAttribute("tipOrder", orderRel + "");

            rd.forward(request, response);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            context.responseComplete();
        }

    }

    public String getColorerr() {
        return colorerr;
    }

    public void setColorerr(String colorerr) {
        this.colorerr = colorerr;
    }

    public String getCorletraerr() {
        return corletraerr;
    }

    public void setCorletraerr(String corletraerr) {
        this.corletraerr = corletraerr;
    }

    public EmpreendimentoLote[] getEmpreendimentoLoteCarga() {
        return empreendimentoLoteCarga;
    }

    public void setEmpreendimentoLoteCarga(EmpreendimentoLote[] empreendimentoLoteCarga) {
        this.empreendimentoLoteCarga = empreendimentoLoteCarga;
    }

    public LazySelectedEmpreendimentoLote getLazyEmpreendimentoLoteCarga() {
        return lazyEmpreendimentoLoteCarga;
    }

    public void setLazyEmpreendimentoLoteCarga(LazySelectedEmpreendimentoLote lazyEmpreendimentoLoteCarga) {
        this.lazyEmpreendimentoLoteCarga = lazyEmpreendimentoLoteCarga;
    }

    public List<EmpreendimentoLote> getEmpreendimentoLoteListCarga() {
        return EmpreendimentoLoteListCarga;
    }

    public void setEmpreendimentoLoteListCarga(List<EmpreendimentoLote> EmpreendimentoLoteListCarga) {
        this.EmpreendimentoLoteListCarga = EmpreendimentoLoteListCarga;
    }

    public void gerarCarga(ActionEvent actionEvent) {
        msg = null;
        Map<String, Object> filters;
        filters = new HashMap<>();

        try {
            String cFiltro = " status = 'A' ";
            EmpreendimentoLoteListCarga = empreendimentoLoteJpa.getNative("EmpreendimentoLote", 0, empreendimentoJpa.getCount("EmpreendimentoLote"), null, false, filters, null, cFiltro);
            lazyEmpreendimentoLoteCarga = new LazySelectedEmpreendimentoLote(EmpreendimentoLoteListCarga);

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Carga dos Dados efetuada com Sucesso!", " ");
        } catch (Exception ex) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Carregar os Dados!", " ");
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

}
